【发布时间】:2013-12-19 17:28:24
【问题描述】:
我想遍历网站的所有网页。我在这里尝试使用机械化,但它只查看网站的主要链接。应该怎么修改?
import mechanize
import lxml.html
br = mechanize.Browser()
response = br.open("http://www.apple.com")
for link in br.links():
print link.url
br.follow_link(link) # takes EITHER Link instance OR keyword args
print br
br.back()
这是新代码:
import mechanize
import lxml.html
links = set()
visited_links = set()
def visit(br, url):
response = br.open(url)
links = br.links()
for link in links:
if not link.url in links:
visited_links.add(link.url)
visit(br, link)
print link.url
if __name__ == '__main__':
br = mechanize.Browser()
visit(br,"http://www.apple.com")
【问题讨论】:
-
为什么要使用机械化?如果你想用 Y 做 X,就问怎么做 X。因为 Y 可能不是最好的解决方案。
-
我以为我会使用 beautifulsoup,但我发现 mechanize 比 beautifulsoup 快。我也考虑过创建一个蜘蛛,但不知道如何去做
-
使用 mechanize(或类似的东西)可能是聪明的,而不是编写自己的爬虫。有关原因的详细解释,请参阅swizec.com/blog/scraping-with-mechanize-and-beautifulsoup/…