我想写一个使用Python的爬虫。这意味着:我已经获得了某些网站的主页的网址,并且我希望我的程序可以通过访问网站的链接抓取所有网站。我怎样才能轻松快速地做到这一点?我已经尝试了BeautifulSoup,但它真的是CPU消耗,而且在我的电脑上很慢。Python的爬虫?
回答
我推荐使用机械化与lxml.html组合。正如罗伯特国王建议的那样,机械化可能是通过该网站进行导航的最佳选择。提取元素我会使用lxml。 lxml比BeautifulSoup快得多,可能是Python可用的最快解析器。 this link显示了python不同html解析器的性能测试。我个人不会使用scrapy包装。
我还没有测试过,但这可能是你要找的东西,第一部分是直接从mechanize documentation。 the lxml documentation也相当有帮助。特别看看this和this部分。
import mechanize
import lxml.html
br = mechanize.Browser()
response = br.open("somewebsite")
for link in br.links():
print link
br.follow_link(link) # takes EITHER Link instance OR keyword args
print br
br.back()
# you can also display the links with lxml
html = response.read()
root = lxml.html.fromstring(html)
for link in root.iterlinks():
print link
您还可以通过root.xpath()获取元素。一个简单的wget甚至可能是最简单的解决方案。
希望我能帮到你。
我不认为第一个for循环正在做你打算做的事情。 – cerberos
我迄今为止只使用机械化来浏览表格。它不是简单地打印网站上的每个链接,然后按照它? br.back可能是不必要的。但在我看来,它的确如此。帖子[这里](http://stackoverflow.com/questions/3569622/python-mechanize-follow-link-by-url-and-what-is-the-nr-parameter)是相似的。但是由于我对Python /编程一般都很陌生,如果我错了,请纠正我。 – ilprincipe
无论如何,我开始使用lxml,一切都变得更快!谢谢! –
看一看scrapy(和related questions)。至于性能......很难在看不到代码的情况下提出任何有用的建议。
我喜欢使用机械化。它非常简单,你下载它并创建一个浏览器对象。有了这个对象,你可以打开一个URL。您可以像在普通浏览器中一样使用“后退”和“前进”功能。您可以遍历页面上的表单并在需要时填写表单。 您也可以迭代页面上的所有链接。每个链接对象都有你可以点击的网址等。
这里有一个例子: Download all the links(related documents) on a webpage using Python
下面是一个very fast (concurrent) recursive web scraper using eventlet的示例。它只会打印找到的网址,但您可以修改它以完成您想要的操作。也许你想用lxml(快速),pyquery(慢但仍然快)或BeautifulSoup(慢)解析html来获得你想要的数据。
- 1. Python爬虫 - html.fromstring
- 2. Python网络爬虫
- 3. Python中的网络爬虫
- 4. Python爬虫的问题
- 5. python中的Facebook爬虫
- 6. 硒与python网络爬虫
- 7. Python多线程爬虫
- 8. 网络爬虫
- 9. 爬虫实例
- 10. Python的网络爬虫:连接超时
- 11. Python的多网络爬虫问题
- 12. 简单的Python网络爬虫
- 13. Python简单的网络爬虫错误(无限循环爬行)
- 14. Python BeautifulSoup提取标题网页爬虫
- 15. 网络爬虫多处理在Python 3
- 16. Python网络爬虫没有输出
- 17. Python多域名爬虫InvalidSchema异常
- 18. python网站爬虫(多个网站)
- 19. Python网络爬虫与MySQL数据库
- 20. Python爬虫。解析并执行ajax
- 21. 与Python 2.7.9分页网络爬虫
- 22. Python网络爬虫,深度问题
- 23. 使用python beautifulsoup进行网页爬虫
- 24. PHP与Python对于网络爬虫
- 25. 开源C++爬虫?
- 26. C++网络爬虫
- 27. Java Web爬虫库
- 28. 文件爬虫OSError
- 29. PHP网络爬虫
- 30. java网络爬虫
经常讨论......看看处理“scrapy”的SO问题 –