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

StackOverflow https://stackoverflow.com/questions/2067915

  •  20-09-2019
  •  | 
  •  

Вопрос

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

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 или помочь мне в этом конкретном вопросе?

Энтони

Это было полезно?

Решение

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

Другие советы

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

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

Зацепка :определите БОЛЬШЕ о вашем mechanize.Browser()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top