【问题标题】:Python Mechanize with nested links带有嵌套链接的 Python 机械化
【发布时间】:2013-05-25 17:59:37
【问题描述】:

我目前正在抓取一个包含多个链接级别的网站,并且似乎 mechanize 无法处理嵌套链接。例如,假设我有:

br = mechanize.Browser()
response = br.open('some_site');

for link in br.links():
  br.follow_link(link)
  for link in br.links():
    br.follow_link(link)

一旦 mechanize 退出内循环,它就会停在那里,而不会循环通过外循环的链接。

我尝试了 br.back() 但它也不起作用。有解决方法还是我做错了什么?谢谢。

【问题讨论】:

标签: python-2.7 web-crawler


【解决方案1】:

在开始循环之前将链接存储在列表中:

br = mechanize.Browser()
response = br.open('some_site');

current_links = list(br.links())

for link in current_links:
  br.follow_link(link)
  sub_links = list(br.links())
  for link in sub_links:
    br.follow_link(link)

当您更改页面时,您正在迭代的内容 (br.links()) 正在发生变化,这可能会导致奇怪的行为。

【讨论】:

  • 是的,看起来就是这个问题。但是您应该编辑您的答案,以便按值复制列表。否则 sub_links 仍然保留对 br.links() 的引用,并且它也不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多