Ошибка при использовании Python/механизма select_form()?

Я пытаюсь удалить некоторые данные с веб-сайта. Сценарии, которые я пытаюсь написать, должны получить содержимое страницы:

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

Должен имитировать пользователя, просматривающего каждую опцию для дополнительных позиций и дат, и имитировать нажатие на «Перейти», после чего после извлечения данных следует использовать функцию возврата.

На данный момент я пытался просто выбрать эту опцию для дополнительной репутации:

            <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

Я не смог найти надлежащего объяснения всех функций на домашней странице mechanize. Может ли кто-нибудь указать мне правильный учебник по использованию форм и Mechanize или помочь мне в этом конкретном вопросе?

Энтони


person BlueTrin    schedule 14.01.2010    source источник


Ответы (3)


Я думаю, что вы правильно используете библиотеку, но синтаксический анализатор, похоже, испытывает проблемы с этой конкретной страницей. Я использую библиотеку таким же образом на другой странице ("http://flashcarddb.com/login ") и не выдает ошибку.

person Duane J    schedule 16.01.2010

Я только что столкнулся с этой же проблемой. Страница, к которой я обращался, прошла проверку W3C, поэтому я не думал, что это проблема разметки. Однако html tidy пожаловался, что на странице есть файл . Как только я это исправил, механизация начала работать.

Кроме того, я видел ответ на этот вопрос в списке рассылки. Я просто хотел бы отметить, что добавление factory=mechanize.RobustFactory() к mechanize.Browser() не изменило результат.

person Greg    schedule 02.11.2010

Подсказка: определите БОЛЬШЕ о вашем chanize.Browser()

person Yuda Prawira    schedule 05.12.2010