爬虫-使用模拟浏览器操作(截取网页)

Posted mr119blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫-使用模拟浏览器操作(截取网页)相关的知识,希望对你有一定的参考价值。

最近遇到一个问题就是,如何模拟真实浏览器行为然后截取显示的网页。

方案

  1. 模拟登陆网站或者直接使用cookie登陆。
  2. 对指定页面按钮进行点击刷新页面,截取网页。

我们使用selenium库来操作浏览器驱动,即执行浏览器相应的驱动命令,实现相应的浏览器操作。


准备工作

  • selenium库
    浏览器自动化测试框架,其作用是通过操作浏览器驱动来控制浏览器行为,达到模拟真实用户操作浏览器的效果。原理为自动化测试python脚本-->浏览器driver -->浏览器。官网 python中文文档 python官方文档
    python安装
pip install -U selenium 安装并更新
  • 浏览器驱动
    selenium需要下载对应的浏览器驱动才能操作计算机中已经安装好的浏览器。下载对应驱动版本exe文件后,将其放入python安装路径的scripts目录即可,注意驱动版本要和浏览器版本匹配。
    chrome驱动: 下载地址 备用地址

  • Phantomjs浏览器
    它是基于webkit浏览器的无头浏览器,下载安装完成并设置系统环境变量。selenium支持直接调用。官方下载地址。截图的图片为长图(网页全部展开)。


使用方法

以chrome浏览器为例

  • 简单用例
from selenium import webdriver  #导入驱动模块

driver =webdriver.Chrome()       #创建相应浏览器驱动对象
driver.get("http://www.baidu.com")  #使用驱动对象打开网站
  • 操作cookie
cookie = {‘name': foo', 'value': 'bar’} 
driver.add_cookie(cookie)

driver.get_cookies()
  • 获取元素
    已知元素定义
    <input type="text" name="passwd" id="passwd-id" />
    可以通过以下方法获取元素
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element.find_elements_by_tag_name("option")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
  • 输入内容
element.send_keys("some text")
element.send_keys(" and some", Keys.ARROW_DOWN) 使用Keys类来模拟输入方向键
element.clear() 清除文本内容

element.click() 点击
  • 等待页面加载完成

  • 处理对话框
 alert = drvier.switch_to_alert()
  • 关闭浏览器
driver.quit() #关闭这个浏览器
driver.close() #关闭当前界面
  • 截取网页图片
    driver.save_screenshot(‘1.png‘)

实际操作用例

参考文章

Python爬虫学习笔记13】使用Selenium模拟浏览器行为

selenium 入门笔记

使用python模拟浏览器实现登陆

Selenium-Python中文文档

python爬虫:使用Selenium模拟浏览器行为

以上是关于爬虫-使用模拟浏览器操作(截取网页)的主要内容,如果未能解决你的问题,请参考以下文章

爬虫之Selenium

python网页爬虫开发之六-Selenium使用

Python爬虫常用之登录 浏览器模拟登录

CentOS7下python3 selenium3 使用Chrome的无头浏览器 截取网页全屏图片

python爬虫

python爬虫能干啥