这是一个非常专业的案例,我觉得问它很尴尬;但是我正在努力解决这个问题。
我需要通过表单和结果页面跟踪跟踪号,所以我一直在 python 中使用机械化,表单提交后的链接嵌入在 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