python+selenium+PhantomJS环境搭建(数据抓取向)

组件

首先贴出环境下载地址和版本


配置环境

这个ChromeDriver不是我这次下载的,是早就下载的,所以版本应该不是最新的,在网上找了找没找到下载的地方,就放到百度云了。

下面来说如何安装整套环境。

ChromeDriver下载之后放到任意一个命令可访问的目录,我这里放进了chrome的目录里(C:Program Files (x86)GoogleChromeApplication),当然这个目录要加到PATH里,要不然访问不到的。

同样的,PhantomJS下载之后,我们解压zip包,将里面bin目录下的phantomjs.exe拷贝到命令可访问的目录,建议放到C:Python27Scripts目录下,再把这个目录设置到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:Python27Scripts'目录到环境变量,这个情况现在还不知道是为什么。

发现了一个问题,我上面的小测试并没有测试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都能解析出来,另一个我就不测试了,肯定没问题的,下次需要抓取异步网页的时候再深入使用。

最后修改:2017 年 04 月 28 日 12 : 24 AM

2 条评论

  1. moozik

    chrome出了无头模式,也就是headless,所以PhantomJS已经宣布破产了,曾经的神器被降维打击,令人唏嘘

  2. moozik2

    感谢当时的我研究过这个,节省了好多时间啊

发表评论