Pregunta

Este es un caso muy especializado y me siento incómodo pidiéndole; Sin embargo estoy en el extremo de los ingenios a trabajar en él.

Tengo que seguir un número de seguimiento a través de un formulario y una página de resultados, así que he estado usando mecanizar en Python, el enlace después de la presentación forma se incrusta en javascript así que no puedo simplemente follow_link. Lo que quiero hacer es regex a cabo la url y luego pedir a llamar open() en la que, sin embargo cuando lo haga -. Me encuentro con algunos problemas

Puedo llamar br.geturl() y br.title() muy bien en la página de destino, pero cuando llega el momento de leer la fuente de la página en cuestión, que arroja

AttributeError: mechanize._mechanize.Browser instance has no attribute read (perhaps you forgot to .select_form()?)

¿Hay alguna manera de hacer esto o estoy mono-parcheo demasiado, cualquier consejo sería excelente

editar [más código {realmente feo tratando de conseguir que funcione}]:

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
¿Fue útil?

Solución

Nunca se hace primero .read llamada a un método de instancia del navegador. Esto se debe a que no tiene tal método. El método tiene Browswer.response read, así que si usted desea conseguir el cuerpo de la respuesta que había necesidad de hacer:

response = br.response()
response.read()

En el futuro, se podría utilizar dir(obj) para ver el contenido de la obj objeto, ya sea el navegador o cualquier otra cosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top