2010-01-14 6 views
2

Я пытаюсь отменить некоторые данные с веб-сайта. скриптов я пытаюсь писать, должны получить содержимое страницы:Ошибка при использовании Python/mechanize select_form()?

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

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

Пока я пытался просто выбрать этот вариант для дополнительного Standing:

  <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 домашней странице. Может ли кто-нибудь указать мне на правильное руководство по использованию форм и механизировать или помочь мне в этой конкретной проблеме?

Энтони

ответ

1

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

1

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

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

0

Подтвердить: подробнее о вашей механике.Browser()