爬虫使用无头浏览器
Posted maikatsura
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫使用无头浏览器相关的知识,希望对你有一定的参考价值。
python + selenium + webdriver
chrome ff opera等浏览器都有webdriver提供。
可惜还是依赖selenium。
以下以chrome为例。
1 centos7上安装chrome
centos6.5不支持。已无法安装现在的chrome。
win10可以用。所以本地调试没有问题。
1. 配置yum源
在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo
#vim /ect/yum.repos.d/google-chrome.repo
写入如下内容:
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
保存并退出:
1 2 | 1.按 ESC 退出编辑模式(回到命令模式) 2.输入 :wq! 保存并退出 |
2.安装google chrome浏览器
Google官方源安装:
1 | #yum -y install google-chrome-stable |
Google官方源可能在中国无法使用,导致安装失败或者在国内无法更新,可以添加以下参数来安装:
1 | #yum -y install google-chrome-stable --nogpgcheck |
2 下载chromedriver
版本间并不兼容
3 python 下简单使用
from selenium import webdriver
#不指定路径会在环境变量里找
driver = webdriver.Chrome(‘/path/to/chromedriver‘)
driver.get(‘http://www.google.com/xhtml‘);
search_box = driver.find_element_by_name(‘q‘)
search_box.send_keys(‘ChromeDriver‘)
search_box.submit()
search_bot.get_attribute("outerHTML")
#窗口关闭
driver.quit()
4 无头模式
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument(‘--headless‘)
driver = webdriver.Chrome(chrome_options=chrome_options,executable_path=‘D:Program Fileschromedriverchromedriver.exe‘)
centos7使用中的问题
安装chrome和virtualbox的增强功能后无法再进入用户登录页面
网上说是GNOME的兼容性问题,进入终端yum upgrade后才能进。所用版本更新了大概1G,内核也升级了
注意需要切换到一个非root用户才能使用chromedriver,原因可能是chrome的启动策略要求非root用户,但是从打印的异常里是看不到这个原因的。。。
网上说到的其他可能是chromedriver和chrome的版本对应关系
5 如何和pyspider对接
1 直接嵌入pyspider
2 用python或者java启动一个独立的程序,提供rpc调用或者restapi
后者比较类似目前phantomjs的使用形式。
考虑并发性能,用springboot搭建,通过restapi访问,维持一个webdriver
池提供服务。
nodejs + puppeteer
谷歌官方提供的node库,通过devtools协议控制
1 安装
npm i puppeteer
安装自带chromium,由于墙的原因可能下载失败
以上是关于爬虫使用无头浏览器的主要内容,如果未能解决你的问题,请参考以下文章
爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器