2013-05-25 2 views
1

현재 링크를 여러 수준으로 가지고있는 사이트를 크롤링하고 있으며 기계화가 중첩 된 링크를 처리 할 수없는 것 같습니다. 예를 들어의 내가 있다고 가정 해 봅시다 : 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()을 시도했지만 작동하지 않았습니다. 거기에 대한 해결 방법이 있습니까 아니면 내가 뭔가 잘못하고 있습니까? 감사. 당신이 페이지를 변경할 때, 일이 당신이 (br.links())를 통해 반복되는

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) 

아마 이상한 행동을 일으키는 원인이되는, 변화 : 목록에있는 링크

+0

그냥 제안 : 시도 요청 (http://docs.python-requests.org/en/latest/)을 사용하면 삶이 편하게됩니다. – scripts

답변

1

스토어 당신은 루프 시작하기 전에.

+0

그게 문제인 것처럼 보입니다. 그러나 목록을 값으로 복사하도록 답변을 편집해야합니다. 그렇지 않으면 sub_links는 여전히 br.links()에 대한 참조를 보유하며 작동하지 않습니다. –

+0

아, 좋은 지적, 완전히 놓친, 여기에서 편집 – qwwqwwq