문제

웹 사이트에서 일부 데이터를 폐기하려고합니다. 내가 쓰려고하는 스크립트는 페이지의 내용을 가져와야합니다.

http://www.atpworldtour.com/Rankings/Singles.aspx

사용자가 추가 순위와 날짜를 위해 모든 옵션을 가로 지르고 GO 클릭을 시뮬레이션 한 다음 데이터를 가져 오면 백 기능을 사용해야합니다.

지금은 추가 스탠딩을 위해이 옵션을 선택하려고 노력했습니다.

            <option value="101" >101-200</option>

다음은 이것을 시도하려고 시도합니다.

from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import urllib2



br = Browser();
br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
br.select_form(nr=0);
br["r"] = "101";

response = br.submit();

그러나 select_form (nr = 0)에서는 첫 번째 양식을 선택해야합니다.

이것은 Python에 의해 반환 된 로그입니다.

>>> from mechanize import Browser
>>>
>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> import urllib2
>>>
>>>
>>>
>>> br = Browser();
>>> br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
<response_seek_wrapper at 0x311bb48L whose wrapped object = <closeable_response
at 0x311be88L whose fp = <socket._fileobject object at 0x0000000002C94408>>>
>>> br.select_form(nr=0);
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build\bdist.win-amd64\egg\mechanize\_mechanize.py", line 505, in select_
form
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 546, in __getattr__
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 559, in forms
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 228, in forms
mechanize._html.ParseError

기계화 홈페이지에서 모든 기능에 대한 적절한 설명을 찾을 수 없었습니다. 누구든지 양식을 사용하기위한 적절한 튜토리얼을 지적 하고이 특정 문제를 기계화하거나 도와 줄 수 있습니까?

앤서니

도움이 되었습니까?

해결책

라이브러리를 올바르게 사용하고 있다고 생각하지만 파서는 해당 특정 페이지에 문제가있는 것 같습니다. 다른 페이지에서 같은 방식으로 라이브러리를 사용하고 있습니다 ( "http://flashcarddb.com/login") 오류가 발생하지 않습니다.

다른 팁

방금이 같은 문제를 해결했습니다. 내가 액세스하고있는 페이지는 W3C 검증을 통과 했으므로 마크 업 문제라고 생각하지 않았습니다. 그러나 HTML Tidy는 페이지가 a 내에 있다고 불평했습니다. 일단 고칠 때 Mechanize가 작동하기 시작했습니다.

또한 메일 링리스트 에서이 문제에 대한 답변을 보았습니다. Mechanize.browser ()에 factory = mechanize.robustfactory ()를 추가하면 결과가 변경되지 않았습니다.

단서 : mechanize.browser ()에 대해 더 많이 정의하십시오.

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