爬虫使用无头浏览器

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使用中的问题

安装chromevirtualbox的增强功能后无法再进入用户登录页面

网上说是GNOME的兼容性问题,进入终端yum upgrade后才能进。所用版本更新了大概1G,内核也升级了

注意需要切换到一个非root用户才能使用chromedriver,原因可能是chrome的启动策略要求非root用户,但是从打印的异常里是看不到这个原因的。。。

网上说到的其他可能是chromedriverchrome的版本对应关系

 

5 如何和pyspider对接

1 直接嵌入pyspider

2 python或者java启动一个独立的程序,提供rpc调用或者restapi

后者比较类似目前phantomjs的使用形式。

 

考虑并发性能,用springboot搭建,通过restapi访问,维持一个webdriver

池提供服务。

 

 

nodejs + puppeteer

谷歌官方提供的node库,通过devtools协议控制

1 安装

npm i puppeteer

 

安装自带chromium,由于墙的原因可能下载失败

 

以上是关于爬虫使用无头浏览器的主要内容,如果未能解决你的问题,请参考以下文章

运用 phantomjs 无头浏览器破解四种反爬虫技术

无敌爬虫之无头浏览器

反爬虫中chrome无头浏览器的几种检测与绕过方式

爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器

如果网页内容是由javascript生成的,应该怎么实现爬虫

无头浏览器检测