5

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

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

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

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

有人告诉我,诸如僵尸或 Ghost 之类的无头浏览器会帮助我,但我真的不太了解这些。我尝试使用诸如 mechanize 之类的库,但它们并不能真正满足我的需要,即加载结果、获取网页和输入 BS4。

考虑到我对 Python 的了解很少,有人可以在这里帮助我吗?

谢谢

4

1 回答 1

9

带有phantomjs的Selenium Webdriver可以对 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
  • 下载并解压 phantomjs
  • 将 phantomjs 二进制文件链接或移动到 PATH 中的目录

    % cd phantomjs-1.9.0-linux-i686/bin/
    % ln phantomjs ~/bin
    
于 2013-08-07T11:46:31.420 回答