2013-05-25 55 views
1

我目前正在爬取一个网站,有很多级别的链接,它似乎像mechanize不能处理嵌套的链接。例如,让我们说我有:嵌套链接的Python机械化

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) 

机械化,一旦出了内循环,它只是停在那里,而无需通过从外循环的链接循环。

我试过br.back(),但它也没有工作。有没有解决方法,或者我做错了什么?谢谢。

+0

只是一个建议:尝试请求(http://docs.python-requests.org/en/latest/)会让你的生活更轻松 – scripts

回答

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

+0

YUP看起来就是这个问题。但是你应该编辑你的答案,以便按照价值复制列表。否则sub_links仍然持有br.links()的引用,并且它也不起作用。 –

+0

啊好点,完全错过了,在这里编辑 – qwwqwwq