Dies ist ein wirklich spezieller Fall, und es ist mir unangenehm, danach zu fragen, aber ich bin mit meinem Latein am Ende, wenn ich daran arbeite.
Ich brauche, um eine Tracking-Nummer durch ein Formular und eine Ergebnisseite zu folgen, so dass ich mit mechanize in Python, der Link nach Formularübermittlung in Javascript eingebettet ist, so kann ich nicht einfach follow_link. Was ich tun möchte, ist zu regex aus der Url und dann fragen Sie aufrufen open()
Aber wenn ich das tue, stoße ich auf einige Probleme.
Ich kann anrufen br.geturl()
y br.title()
auf der Zielseite, aber wenn es an der Zeit ist, die Quelle der fraglichen Seite zu lesen, kommt es zu
AttributeError: mechanize._mechanize.Browser instance has no attribute read (perhaps you forgot to .select_form()?)
Gibt es eine Möglichkeit, dies zu tun, oder bin ich monkey-Parcheando es zu viel, jede Beratung wäre großartig
edit [mehr Code {wirklich hässlich, ich versuche nur, ihn zum Laufen zu bringen}]:
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