2

これは非常に特殊なケースであり、私はそれを尋ねるのは気が引けます。しかし、私はそれに取り組んでいます。

フォームから結果ページまで追跡番号をたどる必要があるため、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
4

1 に答える 1