使用Python爬行吗?

Mat*_*nti 2 python bots beautifulsoup web-crawler

我想使用python编写搜寻器。这意味着:我已经获得了某些网站主页的URL,并且我希望我的程序能够通过停留在网站中的链接来爬网所有网站。如何快速轻松地做到这一点?我已经尝试过BeautifulSoup,但是它确实消耗CPU且在我的PC上非常慢。

ilp*_*ipe 5

我建议将机械化与lxml.html结合使用。正如罗伯特·金(Robert King)所建议的那样,机械化可能是浏览网站的最佳方法。为了提取元素,我将使用lxml。lxml比BeautifulSoup快得多,并且可能是python最快的解析器。该链接显示了针对python的不同html解析器的性能测试。就我个人而言,我将避免使用刮擦式包装纸。

我没有测试过,但这可能就是您要寻找的东西,第一部分直接取自机械化文档lxml文档也很有帮助。特别是看看这个这个节。

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
Run Code Online (Sandbox Code Playgroud)

您还可以通过root.xpath()获取元素。一个简单的wget甚至可能是最简单的解决方案。

希望我能有所帮助。