0


Selenium获取浏览器Network数据包

我的博客:acsec.xyz
微信公众号: Ac sec

一.概述

我们有时候在爬取jsp动态网站时,发现爬取的数据是不完整的。这时候我们就要获取浏览器F12里面的Network数据包,这样才能得到完整的数据。下面我们用python的Selenium模块配合Browsermob-Proxy抓取Network数据包。


二.环境

1.python3.10

2.pycharm2021.1

3.Browsermob-Proxy2.1.4

  1. 下载地址:
  2. https://github.com/lightbody/browsermob-proxy/releases/tag/browsermob-proxy-2.1.4

4.Chrome和对应版本的chromedriver.exe


三.爬取

1.使用百度搜索python,查看network包

在这里插入图片描述

2.我们一般是要拿url和response部分

在这里插入图片描述

在这里插入图片描述

3.我们上代码。

  1. import time
  2. import json
  3. import re
  4. import requests
  5. from browsermobproxy import Server
  6. from selenium import webdriver
  7. from selenium.webdriver.chrome.options import Options
  8. defmain():# 开启代理
  9. BMPserver = Server(r'.\browsermob-proxy-2.1.4\bin\browsermob-proxy.bat')
  10. BMPserver.start()
  11. BMPproxy = BMPserver.create_proxy()# 配置代理启动webdriver
  12. chrome_options = Options()
  13. chrome_options.add_argument('--ignore-certificate-errors')
  14. chrome_options.add_argument('--proxy-server={}'.format(BMPproxy.proxy))# 隐藏窗口# chrome_options.add_argument("--headless")# chrome_options.add_argument(# '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')# chrome_options.add_argument('--no-sandbox')# chrome_options.add_argument('--disable-gpu')# chrome_options.add_argument('--disable-dev-shm-usage')
  15. brosver = webdriver.Chrome(options=chrome_options)# 获取返回内容
  16. url ="https://www.baidu.com/"
  17. BMPproxy.new_har("video",options={'captureContent':True,'captureContent':True})# 模拟浏览器
  18. brosver.get(url)
  19. brosver.find_element_by_xpath('//*[@id="kw"]').send_keys("python")
  20. brosver.find_element_by_xpath('//*[@id="su"]').click()
  21. json_data = BMPproxy.har
  22. #将json数据存储到本地#result_json = json.dumps(json_data,indent=4)#with open("baidu.json", "w", errors="igone") as f:#f.write(result_json)for entry in json_data['log']['entries']:# 根据URL找到数据接口
  23. entry_url = entry['request']['url']# 获取接口返回内容print(entry_url)
  24. main()

​ 这里是通过browsermob-proxy进行代理,抓取network数据包,工作原理和fiddler差不多。抓到的数据会以json格式输出,然后通过循环把需要的内容(url、response)打印出来

4.json文件格式
在这里插入图片描述

在这里插入图片描述

5.上面代码输出结果

在这里插入图片描述

6.同理,改变参数可以获取其他数据。在这里我们会发现response部分进行了编码,但是不影响,当你用python打印出来的时候,它会自动解码。

标签: selenium python 爬虫

本文转载自: https://blog.csdn.net/qq_51922767/article/details/122396215
版权归原作者 0xActive 所有, 如有侵权,请联系我们删除。

“Selenium获取浏览器Network数据包”的评论:

还没有评论