1

我目前正在抓取一个具有多个链接级别的站点,并且似乎 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() 但也没有用。有解决方法还是我做错了什么?谢谢。

4

1 回答 1

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()) 正在发生变化,这可能会导致奇怪的行为。

于 2013-05-25T18:21:41.823 回答