所以我是一名CS学生,他正在努力学习网络抓取,以及随之而来的所有事情。在搞乱了iMacros和其他一些数据抓取工具后,我转向Python,这是我当时不熟悉的一种语言。我了解了BeautifulSoup和urllib2,并通过stackoverflow和其他一些论坛来学习它。“/ p>
现在,使用我迄今为止获得的知识,我可以抓取大多数静态网页。然而,我们都知道静态页面的时代已经结束,因为JS现在甚至在平庸的网站上占据着至高无上的地位。
我希望有人在这里指导我正确的方向。我想学习一种方法来加载载有Javascript的网页,加载所有内容,然后以某种方式将这些数据导入到BeautifulSoup函数中。 Urllib2很糟糕。我还希望能够填写表单并浏览按钮点击。
大多数我感兴趣的网站都包含一长串结果列表,这些结果会在您向下滚动时加载。加载它们然后下载页面似乎没有帮助(不知道为什么会这样)。我正在使用Windows 7,并安装了Python 2.7.5。
我被告知像Zombie或Ghost这样的无头浏览器会帮助我,但我真的不太了解这些。我尝试使用机械化等库,但它们并不真正满足我的需要,即加载结果,获取网页,并输入BS4。
请记住我对Python的最低限度知识,有人可以帮助我吗?
由于
答案 0 :(得分:9)
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
将phantomjs二进制文件链接或移动到PATH中的目录
% cd phantomjs-1.9.0-linux-i686/bin/
% ln phantomjs ~/bin