このような質問をしなければならないのは申し訳ないのですが、Python の mechanize ドキュメントは本当に不足しているようで、理解できません。リンクをたどると、1 つの例しか見つかりません。
response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1)
しかし、正規表現は使いたくありません。URL に基づいてリンクをたどりたいだけです。どうすればいいでしょうか。また、リンクをたどるために時々使用される「nr」とは何ですか?
情報があればよろしくお願いします
ベストアンサー1
br.follow_link
Link
オブジェクトまたはキーワード引数 (など) のいずれかを取りますnr=0
。
br.links()
すべてのリンクをリストします。
br.links(url_regex='...')
正規表現に一致する URL を持つすべてのリンクを一覧表示します。
br.links(text_regex='...')
リンク テキストが正規表現に一致するすべてのリンクを一覧表示します。
br.follow_link(nr=num)
num
ページ上の 番目のリンクをたどります。カウントは 0 から始まります。レスポンス オブジェクト (br.open(...) が返すものと同じ種類) を返します。
br.find_link(url='...')
指定された URL と完全に一致するLink
オブジェクトを返します。url
br.find_link
、、br.links
はすべて同じキーワードを受け入れます。 を実行して、br.follow_link
それらのキーワードに関するドキュメントを参照してください。br.click_link
help(br.find_link)
編集:フォローしたいターゲット URL がある場合は、次のようにします。
import mechanize
br = mechanize.Browser()
response=br.open("http://www.example.com/")
target_url='http://www.rfc-editor.org/rfc/rfc2606.txt'
for link in br.links():
print(link)
# Link(base_url='http://www.example.com/', url='http://www.rfc-editor.org/rfc/rfc2606.txt', text='RFC 2606', tag='a', attrs=[('href', 'http://www.rfc-editor.org/rfc/rfc2606.txt')])
print(link.url)
# http://www.rfc-editor.org/rfc/rfc2606.txt
if link.url == target_url:
print('match found')
# match found
break
br.follow_link(link) # link still holds the last value it had in the loop
print(br.geturl())
# http://www.rfc-editor.org/rfc/rfc2606.txt