문제

이것은 정말 전문화 된 사건이며 나는 그것을 묻는 어색한 느낌입니다. 그러나 나는 Wits 끝에 있습니다.

양식과 결과 페이지를 통해 추적 번호를 따라야하므로 Python에서 Mechanize를 사용하고 있으므로 양식 제출 후 링크는 JavaScript에 포함되므로 단순히 _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
도움이 되었습니까?

해결책

당신은 결코 만들지 않습니다 첫 번째 .read 브라우저 인스턴스에서 방법 호출. 그러한 방법이 없기 때문입니다. 그만큼 Browswer.response 가지다 read 방법, 응답 본문을 얻으려면 다음을 수행해야합니다.

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

미래를 위해 사용할 수 있습니다 dir(obj) 객체의 내용을 볼 수 있습니다 obj, 브라우저 또는 다른 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top