我正在用scrapy写一个爬虫,但是,我遇到了一些用js渲染的网站,因此urllib2.open_url不能工作。我发现我可以用webbrowser.open_new(网址)打开浏览器,但是我不知道如何用webbrowser获取页面的源码。有没有什么方法可以用webbrowser来做这件事,或者有没有其他没有webbrowser的解决方案来处理js站点?
发布于 2013-01-11 11:14:44
你可以使用带有Webkit引擎的scraper。
其中之一就是干刮。
示例:
import dryscrape
search_term = 'dryscrape'
# set up a web scraping session
sess = dryscrape.Session(base_url = 'http://google.com')
# we don't need images
sess.set_attribute('auto_load_images', False)
# visit homepage and search for a term
sess.visit('/')
q = sess.at_xpath('//*[@name="q"]')
q.set(search_term)
q.form().submit()
# extract all links
for link in sess.xpath('//a[@href]'):
print link['href']
# save a screenshot of the web page
sess.render('google.png')
print "Screenshot written to 'google.png'"有关详细信息,请访问:
发布于 2013-01-11 11:29:54
如果你需要一个完整的js引擎,有很多方法可以从Python驱动webkit。直到最近,这类事情都是用Selenium完成的。Selenium驱动了整个浏览器。
最近,从Python运行webkit引擎(包括v8 javascript引擎)有了更新、更简单的方法。请看这个SO问题:Headless Browser for Python (Javascript support REQUIRED!)
它引用了这个博客作为示例Scraping Javascript Webpages with Webkit。它看起来或多或少就是你所需要的。
发布于 2013-01-12 23:10:23
几天来,我一直在努力寻找同一问题的答案。
我建议你用WebKit来试试QT framework。有两个python绑定。一个是PyQt,另一个是PySide。如果你想创建更复杂的东西,或者你想100%控制你的代码,你可以直接使用它们。
对于一些琐碎的事情,比如在浏览器环境中执行JavaScript,您可以使用Ghost.py。当从命令行使用它时,它有some sort of documentation和一些问题,但除此之外,它是很棒的。
https://stackoverflow.com/questions/14270939
复制相似问题