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

Ham*_*hir 5 javascript python screen-scraping web-scraping

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

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

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

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

我被告知无头浏览器,如僵尸或Ghost会帮助我,但我真的不太了解那些.我尝试使用诸如mechanize之类的库,但它们并不真正满足我的需求,即加载结果,获取网页,并输入BS4.

考虑到我对Python的最低限度的了解,有谁可以帮助我在这里?

谢谢

unu*_*tbu 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)
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上,可以安装它们