刮取数据,无头浏览器和Python

时间:2013-08-07 11:37:13

标签: javascript python web-scraping screen-scraping

所以我是一名CS学生,他正在努力学习网络抓取,以及随之而来的所有事情。在搞乱了iMacros和其他一些数据抓取工具后,我转向Python,这是我当时不熟悉的一种语言。我了解了BeautifulSoup和urllib2,并通过stackoverflow和其他一些论坛来学习它。“/ p>

现在,使用我迄今为止获得的知识,我可以抓取大多数静态网页。然而,我们都知道静态页面的时代已经结束,因为JS现在甚至在平庸的网站上占据着至高无上的地位。

我希望有人在这里指导我正确的方向。我想学习一种方法来加载载有Javascript的网页,加载所有内容,然后以某种方式将这些数据导入到BeautifulSoup函数中。 Urllib2很糟糕。我还希望能够填写表单并浏览按钮点击。

大多数我感兴趣的网站都包含一长串结果列表,这些结果会在您向下滚动时加载。加载它们然后下载页面似乎没有帮助(不知道为什么会这样)。我正在使用Windows 7,并安装了Python 2.7.5。

我被告知像Zombie或Ghost这样的无头浏览器会帮助我,但我真的不太了解这些。我尝试使用机械化等库,但它们并不真正满足我的需要,即加载结果,获取网页,并输入BS4。

请记住我对Python的最低限度知识,有人可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:9)

带有Selenium Webdriver

phantomjs可以无头自动浏览JavaScript驱动的网页。安装后,可以像这样使用:

import contextlib
import selenium.webdriver as webdriver
import bs4 as bs

# define path to the phantomjs binary
phantomjs = 'phantomjs'
url = ...
with contextlib.closing(webdriver.PhantomJS(phantomjs)) as driver:
    driver.get(url)
    content = driver.page_source
    soup = bs.BeautifulSoup(content)

在Ubuntu上,可以使用

安装它们
  • sudo pip install -U selenium
  • Download and unpack phantomjs
  • 将phantomjs二进制文件链接或移动到PATH中的目录

    % cd phantomjs-1.9.0-linux-i686/bin/
    % ln phantomjs ~/bin