Ошибка в использовании Python / mechanize select_form ()? - PullRequest
2 голосов
/ 15 января 2010

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

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

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

Anthony

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

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

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

1 голос
/ 16 января 2010

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

0 голосов
/ 05 декабря 2010

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

...