爬虫基础04

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)

你可能感兴趣的:(爬虫基础04)