组件
首先贴出环境下载地址和版本
- python2.7.12
- selenium2.53.6 安装命令
pip install selenium
配置环境
这个ChromeDriver不是我这次下载的,是早就下载的,所以版本应该不是最新的,在网上找了找没找到下载的地方,就放到百度云了。
下面来说如何安装整套环境。
ChromeDriver下载之后放到任意一个命令可访问的目录,我这里放进了chrome的目录里(C:\Program Files (x86)\Google\Chrome\Application),当然这个目录要加到PATH里,要不然访问不到的。
同样的,PhantomJS下载之后,我们解压zip包,将里面bin目录下的phantomjs.exe拷贝到命令可访问的目录,建议放到C:\Python27\Scripts目录下,再把这个目录设置到PATH里。
hello world
现在我们已经有了两套可以解析js的方法了,一个是使用chrome来解析网页,一个是使用PhantomJS解析网页
两种解析方式的比较。
- ChromeDriver 健壮性:好,速度:慢
- PhantomJS 健壮性:略差,速度:快
妈个鸡typecho怎么不支持表格,难道是我的姿势不对?
使用ChromeDriver的方式获取页面数据时,会打开chrome浏览器窗口,必然会导致速度变慢,而且chrome中还加载了图片,这就更慢了。
plantomjs_test.py
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\Python27\Scripts\phantomjs.exe')
driver.get('http://www.baidu.com')
print driver.title
driver.quit()
chrome_test.py
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
print driver.title
#driver.quit()
上面的代码是从网上借鉴来的,自己修改了一下。
driver = webdriver.PhantomJS(executable_path='C:\Python27\Scripts\phantomjs.exe')
上面这句如果不添加path参数,就会报错,可是我明明添加了'C:\Python27\Scripts\'目录到环境变量,这个情况现在还不知道是为什么。
发现了一个问题,我上面的小测试并没有测试js解析的情况,那现在就试试看!
这里我用一个电商网站来测试,这个网站是我遇到过比较难搞的,页面东西全是ajax获取的,而且还有验证字段,虽然当时搞下来了,但是我想现在使用js解析应该更简单。
这是一个耳机的页面,一共有20个商品,我们的目标是抓取商品名称和价格
测试代码:
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\Python27\Scripts\phantomjs.exe')
driver.get('http://www.fengqu.com/other/search.html?_spm=0.sear1.0.0&keyword=%E8%80%B3%E6%9C%BA')
goods_name=driver.find_elements_by_css_selector('h3')
goods_price=driver.find_elements_by_css_selector('strong')
for i in goods_name:
print(i.text)
for i in goods_price:
if i.text.isdigit():
print(i.text)
driver.quit()
速度真的还是有点慢,但是还不错,能解析出来已经很满意了,plantomjs都能解析出来,另一个我就不测试了,肯定没问题的,下次需要抓取异步网页的时候再深入使用。
2 条评论
chrome出了无头模式,也就是headless,所以PhantomJS已经宣布破产了,曾经的神器被降维打击,令人唏嘘
感谢当时的我研究过这个,节省了好多时间啊