python连接linux获取日志_Chromedriver通过network日志获取response.body

爬虫webdriver 技术分享

概述:本博文主要分享chromdriver日志获取response.body 方法和其他selenium简单使用。由于之前Linux Chromedriver chrome-browser安装环境复杂、问题较多加上以前站点反爬策略较为简单,很少用性能相对较弱的webdriver去投入到爬虫的项目中。现在由于webdriver开发环境越来越方便简单,加上站点反爬力度和JavaScript复杂程度越来越高。所以webdriver技术值得仔细研究并投入生产项目。

环境:python3,selenium, chromedriver

官方文档:

第一章 安装环境。

Windows和mac 相对简单。分享centos7 安装

安装selenium

pip3 install selenium

安装chrome-browser

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

yum install ./google-chrome-stable_current_x86_64.rpm

安装完成后会显示当前版本。

我安装的版本是87.0.4280.66-1

安装chromedriver(千万与chrome-browser版本对应)

第二章 爬虫基本使用

爬虫常用操作:

1、设置UserAgent

2、频繁更换ip。文档和网上其他博客启动chromedriver 设置代理的方法很多,但是更换代理需要退出重新启动,极大浪费时间和系统资源。 难以满足爬虫更换代理需求。所以咱们要知道频繁更换Chromedrive代理的方法。

Demo:

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from selenium.webdriver.common.proxy import Proxy

from selenium.webdriver.common.proxy import ProxyType

option = webdriver.ChromeOptions()

option.add_argument('--no-sandbox')

option.add_argument('--headless')

#设置user-agent

option.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:55.0) Gecko/20100101 Firefox/55.0')

caps = DesiredCapabilities.CHROME

driver = webdriver.Chrome(options=option,desired_capabilities=caps)

p = '222.185.28.38:32374'

proxy = Proxy(

{

'proxyType':ProxyType.MANUAL,

'httpProxy':'{}'.format(p),

}

)

proxy.add_to_capabilities(caps)

driver.start_session(caps)

driver.get('http://httpbin.org/get')

print(driver.page_source)

#更换proxy后 重新执行proxy.add_to_capabilities(caps) 和 driver.start_session(caps)即可。不用重启driver更新代理成功。

第三章 webdriver爬虫进阶使用

以前不喜欢使用webdriver还有一个原因, 一些ajax请求,还有一些通过开发者模式可以找到API返回json格式的请求,通过page_source解析效率低且字段没有API全。所以我就开始想,既然浏览器开发者模式可以对network进行分析,webdriver应该也有相应的功能。

如果Chromedrive能对network进行监控,直接拦截response 拿到response.body.那样岂不是非常爽?

最开始想到的方案A: 通过mitmproxy等网络中间人方式对请求进行监控和拦截。

但是方案A有以下几个弊端难以成气候。

1、webdriver需要设置mitmproxy服务为代理,爬虫正常代理逻辑就需要增加二次代理逻辑。 增加很多成本和异常。难以实现流畅的更换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值