これは非常に特殊なケースであり、私はそれを尋ねるのは気が引けます。しかし、私はそれに取り組んでいます。
フォームから結果ページまで追跡番号をたどる必要があるため、Pythonでmechanizeを使用しています。フォーム送信後のリンクはjavascriptに埋め込まれているため、単にfollow_linkを実行することはできません。私がやりたいのは、URLを正規表現してからそれを呼び出すopen()
ことですが、そうするといくつかの問題が発生します。
br.geturl()
ターゲットページで問題なく呼び出すことができますbr.title()
が、問題のページのソースを読み取るときにスローされます
AttributeError: mechanize._mechanize.Browser instance has no attribute read (perhaps you forgot to .select_form()?)
これを行う方法はありますか、それともモンキーパッチを適用しすぎていますか、アドバイスは素晴らしいでしょう
編集 [より多くのコード {実際に動作させようとしているだけで本当に醜い}]:
cosn="########"
baseurl="http://aaa.com/"
search="thing.do"
br=Browser()
br.open(baseurl+search)
br.select_form('traceForm')
br['consignments']=cosn
req=br.submit()
pars=Soup(req.read())
found_url=re.match(r"javascript:window.location.href = '(?P<url>[\w\d=&?\.]+)", pars.find('td', attrs={'class':'select'})['onclick']).group('url')
br.open(baseurl+found_url)
print br.title() # works
print br.geturl() # works
print br.read() # throws exception