2013-05-25 76 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