当前位置: 首页 > news >正文

python爬虫源码:selenium+browsermobproxy实现浏览器请求抓取

前言

        如上篇博客所述:为了抓取所有,通过浏览器F12可以看到的资源(静态资源和接口调用),我使用了selenium+browsermobproxy的方案来处理。

        这是两个模块的安装方案,没有看过的朋友可以去了解一下:

        python爬虫:selenium+browsermobproxy实现浏览器请求抓取(模块安装详解)-CSDN博客

        下面是我编写的一些python代码,可以帮助你尽快入门:

代码

# encoding=utf-8from browsermobproxy import Server
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time
import json# 启动BrowserMob Proxy
server = Server(r"E:\其他源码\browsermob-proxy-2.1.4-bin\browsermob-proxy-2.1.4\bin\browsermob-proxy.bat")  # 替换为BrowserMob Proxy的路径
server.start()# 使用网络代理,如果你需要的话
# proxy = server.create_proxy({"httpProxy":"127.0.0.1:7890"})
proxy = server.create_proxy()# 设置Chrome WebDriver
chrome_service = Service(r"E:\其他源码\chromedriver-win64\chromedriver.exe")  # 替换为WebDriver的路径chrome_options = Options()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy))# 解决 您的连接不是私密连接问题
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-urlfetcher-cert-requests')driver = webdriver.Chrome(service=chrome_service, options=chrome_options)# 设置代理捕获HAR数据
proxy.new_har("comic_order", options={'captureHeaders': True, 'captureContent': True})
# 访问链接A(需要触发POST请求的页面)
driver.get(f"https://xxxxxxxxxxxxxx")  # 替换为实际的初始页面URL# 可能需要等待页面加载
time.sleep(15)  # 可以根据需要调整等待时间# 处理可能的弹出窗口操作,手动或自动化操作,取决于您的具体网站逻辑
# 例如,假设点击某个按钮会弹出窗口
# driver.find_element(By.ID, "your_button_id").click()  # 根据具体情况选择元素并点击# 你可能只需要每次抓取众多响应中的某个接口数据
target_url = 'http://xxxxxxxxxxx'# 获取并分析HAR数据
har_data = proxy.har
for entry in har_data['log']['entries']:req = entry['request']url = req['url']if url == target_url and entry['response']:try:# 获取接口数据result = json.loads(entry['response']['content']['text'])  # 解析为JSON格式print("解析后的JSON内容:", result)# 加入 接下来需要对数据进行处理的操作print('do something?')except json.JSONDecodeError as e:print("解析JSON失败:", e)except Exception as e:print(e)break# 关闭浏览器和代理服务器
driver.quit()
server.stop()


http://www.mrgr.cn/news/9136.html

相关文章:

  • iOS profiles文件过期如何更新
  • AI编程工具有哪些?
  • 【功能自动化】使用Excel文档获取参数数据
  • iOS的UI控件是weak还是strong修饰
  • MSSQL 手工注入(第一关)
  • 通过Python绘制不同数据类型适合的可视化图表
  • 鸿蒙Harmony实战:常用命令交互工具—“hvigorw”
  • 前后端传输加密
  • 无人机技术的最新进展及未来趋势
  • 掌握CSS的@import:跨文件样式的艺术
  • 【unity小技巧】获取免费开源的人物模型,并为obj fbx人物模型绑定骨骼、动画——mixamo的使用介绍
  • 中仕公考怎么样?2025年国考现在准备来得及吗?
  • 【Rust光年纪】构建跨语言桥梁:深度解析Rust FFI绑定生成器及其应用
  • 聚鼎科技:怎么做装饰画更受大众好评
  • 广告接入相关
  • 【C语言进阶】深入C语言指针:基础到进阶的跨越
  • 五、前后端分离通用权限系统(5)
  • idea debug 各个步骤含义
  • 在线BLOG网
  • AI创业的77个方向