Fiddler抓包工具设置
1 设置Fiddler软件
https: Tools - options - HTTPS - ...from browsers only
Actions 添加证书信任
connections: 设置端口号 8888
重启Fiddler软件
2.设置Chrome浏览器
安装代理切换插件: Proxy SwitchOmega
选项 - 新建情景模式 - HTTP 127.0.0.1 8888 - 应用情景模式
把代理切换到自己新建的情景模式上
3.Fiddler常用菜单
Inspector : 查看数据包详细内容,分为 请求(request) 和 响应(response) 两部分
常用子选项卡
Headers : 显示请求头信息
WebForms: 显示POST数据,在body中
Raw: 将整个请求显示为纯文本
lxml模块
-
使用流程
1 from lxml import etree
2 parseHtml = etree.HTML(html)
3 rList = parseHtml.xpath('')
json模块
1 json.loads() : join->python
2 json.dumps() : python->json
Ajax动态加载
1 抓包工具: WebForms->QuerySting
2 parmas = {QuerySting一堆查询参数}
3 URL地址 : 抓包工具Raw下的GET地址
强大网络爬虫组合 selenium+phantomjs / chromedriver
selenium
- Web自动化测试工具,应用于Web自动化测试
- 特点
1 可以运行在浏览器,根据指定命令操作浏览器,让浏览器自动加载页面
2 只是工具,需要与第三方浏览器组合使用
3 安装
conda install selenium
phantomjs(无界面浏览器(无头浏览器))
- 特点
1 把网站加载到内存进行页面加载
2 运行高效 - Windows安装
把下载的exe文件拷贝到python安装目录的Script目录下
查找python程序在哪里 cmd命令where python
查看是否装好phantomjs -v
- ubuntu系统下的安装
1 下载安装包并解压: phantomjs-2.1.1-...
2 cd到解压路径的 bin 目录下
3 把文件拷贝到 /usr/bin/ 目录下,命令:sudo cp phantomjs /usr/bin/
4 终端输入: phantomjs -v
chromedriver
- 安装
安装网址
1 查看Chrome浏览器版本
2 拷贝chromedriver.exe到Scripts目录下
3 chromedriver -v
示例代码
打开百度并获取页面截图
from selenium import webdriver
import time
# 先创建
driver = webdriver.PhantomJS()
# 打开百度
driver.get('http://www.baidu.com/')
# 找到搜索框,发送文字
key = input('请输入要搜索的内容:')
driver.find_element_by_id('kw').send_keys(key)
# 找到 百度一下的按钮,点击一下
driver.find_element_by_id('su').click()
# 等待加载一下
time.sleep(1)
# 截图
driver.save_screenshot(key+'.png')
# 关闭浏览器
driver.quit()
浏览器(driver)对象的方法
- driver.get(url): 发请求,获取响应
- driver.page_source: 获取html源码
-
driver.page_source.find('字符串')
查找失败: -1 -
单元素查找(节点对象,只找第一个,找到就直接返回)
1 driver.find_element_by_id('')
2 driver.find_element_by_name('')
3 driver.find_element_by_class_name('')
4 driver.find_element_by_xpath('') -
多元素查找(返回值是一个列表,列表中是一个一个的节点对象)
driver.find_elements_by_...()
返回值: 列表
利用节点对象的 text 属性可获取文本内容 - 节点对象.send_keys('要发送的内容')
- 节点对象.click()
-
执行脚本,进度条拉到最底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
- 如何设置chrome为无界面浏览器
opt = webdriver.ChromeOptions()
opt.set_headless()
# 设置截图时候的图片大小
opt.add_argument('windows-size=1920x3000')
# 创建浏览器对象
driver = webdriver.Chrome(options=opt)