我正在用scrapy编写蜘蛛,但是,我遇到了一些使用js呈现的网站,因此urllib2.open_url不起作用。我发现我可以使用webbrowser.open_new(url)打开浏览器,但是,我没有找到如何使用webbrowser获取页面的src代码。有没有什么办法可以用webbrowser来做到这一点,或者有没有其他的解决方案没有webbrowser来处理js站点?如何使用python获取webbrowser的源代码
回答
如果你需要处理JavaScript,你需要实现一个JavaScript引擎。这会让你的蜘蛛变得更加复杂。主要是因为JavaScript几乎总是根据时间或用户采取的行动来修改DOM。这使得在爬虫中处理JS非常具有挑战性。 如果你真的需要在你的蜘蛛中处理JavaScript,你可以看看Mozilla的JavaScript引擎:https://developer.mozilla.org/en/docs/SpiderMonkey
你可以在那里使用带有Webkit引擎的scraper。
其中之一是dryscrape。
例子:
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'"
在查看更多信息:
https://github.com/niklasb/dryscrape
https://dryscrape.readthedocs.org/en/latest/index.html
还有一个鬼(http://jeanphix.me/Ghost.py/)另一个无头webkit python实现。我还没有尝试过,所以我不能说哪个更好。 –
Raslan:谢谢你的建议,我在windows上工作,当我尝试安装'dryscrape'时,它告诉安装成功,但是当我在运行时尝试导入drayscrape时失败,说'从cssselect导入GenericTranslator ImportError:没有名为cssselect的模块。 – user806135
dryscrape的安装指南有命令 pip install -r requirements.txt 其中文件requirements.txt具有要安装的软件包列表。其中之一是cssselect。当我尝试运行'pip install -r requirements.txt'时,请按照后面的安装指南 –
如果你需要一个完整的JS引擎,有许多的方法可以在Python驱动的webkit 。直到最近,这些事情都是用Selenium完成的。 Selenium驱动整个浏览器。
最近有更新更简单的方法来运行Python中的webkit引擎(其中包括v8 javascript引擎)。看到这个太问题: Headless Browser for Python (Javascript support REQUIRED!)
它引用这个博客作为一个例子Scraping Javascript Webpages with Webkit。它看起来或多或少地只是你需要的。
我试图在几天内找到相同问题的答案。
我建议你试试QT framework与WebKit。 有两个python绑定。一个是PyQt,另一个是PySide。如果你想创建更复杂的东西或者想要100%控制你的代码,你可以直接使用它们。
对于在浏览器环境中执行JavaScript这样的琐碎事情,您可以使用Ghost.py。它具有some sort of documentation以及从命令行使用它时出现的一些问题,但除此之外它很棒。
- 1. 从WebBrowser获取源代码WPF C#
- 2. 使用IPersistStreamInit从WPF-WebBrowser-Control获取HTML源代码
- 3. python:如何从代码对象获取源代码?
- 4. 如何使用Tortoise SVN从谷歌代码获取源代码?
- 5. 使用请求获取页面而不是Python中的源代码,为什么?我如何获得源代码?
- 6. 使用VB6 WebBrowser控件抓取所有的HTML源代码
- 7. 获取HTML源代码与Python的Cookie
- 8. 获取Webbrowser控件中URL的原始源代码
- 9. VB.NET获取页面的源代码WebBrowser控件
- 10. 使用JavaScript获取URL的源代码
- 11. 如何获取Job的源代码
- 12. 如何获取Komodo Edit的源代码?
- 13. 如何获取.load()的源代码
- 14. 如何使用WebBrowser获取HttpOnly的Cookie?
- 15. 如何使用httpClient编码gzip来获取页面源代码?
- 16. 获取源代码。
- 17. 获取源代码
- 18. 在Webbrowser C中获取网页源代码#
- 19. 如何获取python库ta-lib中使用的各种函数的源代码?
- 20. 远程登录到网站并使用WPF获取HTML源代码WebBrowser类
- 21. Python WebKitWebView:如何获取(生成的)源代码
- 22. 如何获取python打印函数的源代码?
- 23. 如何使用HtmlUnit抓取源代码
- 24. 使用git获取aapt源代码
- 25. 使用Java获取网页源代码
- 26. 如何在AS3中使用RegularExpressions获取图像的源代码?
- 27. 如何使用硒获取特定元素的html源代码?
- 28. 如何使用NSURLConnection获取呈现的javascript源代码
- 29. ANTLR如何获取重写的代码源? (使用TokenRewriteStream)
- 30. 如何使用VB.net获取html页面的源代码?
网页浏览器不存储页面的标记,它包含一个DOM。 – Bergi