1

現在、多くのレベルのリンクがあるサイトをクロールしていますが、機械化ではネストされたリンクを処理できないようです。たとえば、私が持っているとしましょう:

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 に答える