Selenium+Browsermob-Proxy 爬虫-获取浏览器Network请求和响应

Selenium+Browsermob-Proxy 爬虫-获取浏览器Network请求和响应
前言:
selenium + webdriver虽然能够定位DOM元素、操作网页、获取网页等,但是 Selenium 只能处理“结果”,它无法得知浏览器请求的数据接口信息。若是能够像浏览器 Network 那样获取所有接口的请求和返回信息,就能够获取一些关键信息。
本文使用BrowserMob-Proxy 来解决这个问题。 使用 webdriver 通过 proxy 访问网络,再收集 proxy 端的请求和返回内容,从而获取到数据,而这个 proxy 就类似于 fiddler 抓包软件。
1、安装Browsermob-Proxy
(1)、直接到项目的github上下载打好的压缩包即可:https://github.com/lightbody/browsermob-proxy/releases ,支持Linux和Windows。
proxy-2.1.4百度网盘下载地址
链接:https://pan.baidu.com/s/1PBP8Er-uDN3VKfxz9ppOhg
提取码:zgul

(2)、安装对应的python包:
pip install browsermob-proxy

(3)、安装java8环境
安装java8环境参考:https://blog.csdn.net/JunLeon/article/details/122623465
相关资源下载 jdk-8u321-windows-x64
链接:https://pan.baidu.com/s/1twaprZ0gG0PY15gRFU87Sg
提取码:trf4
(4)、Selenium安装
参考:https://blog.csdn.net/wg2627/article/details/119282094

2、实战
这里以 百度 为例。使用 Selenium + Webdriver + Browsermob-Proxy 获取接口返回的数据。

from browsermobproxy import Server
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from pprint import pprint
server = Server("D:\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy.bat")    #路径文件
server.start()
proxy = server.create_proxy()

chrome_options = Options()
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))
chrome_options.add_argument('--ignore-certificate-errors')   
driver = webdriver.Chrome(chrome_options=chrome_options)
# 要访问的地址
base_url = "https://www.baidu.com/"
proxy.new_har("html", options={'captureHeaders': True, 'captureContent': True})  #html随意取名

driver.get(base_url)    #此处最好暂停几秒等待页面加载完成,不然会拿不到结果
time.sleep(3)
result = proxy.har
pprint(result)   #显示
server.stop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值