Pergunta

Estou tentando eliminar alguns dados de um site. Os scripts que estou tentando escrever devem obter o conteúdo da página:

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

Deve simular o usuário que está passando por todas as opções para obter classificações adicionais e as datas e simular clicar em Go, depois de buscar os dados, deve usar a função de volta.

Por enquanto, tenho tentado apenas selecionar esta opção para uma posição adicional:

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

Aqui está minha (pobre) tentativa de tentar fazer isso:

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();

No entanto, ele apenas falha no select_form (nr = 0) que deve estar selecionando o primeiro formulário.

Este é o log devolvido por 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

Não consegui encontrar uma explicação adequada de todas as funções na página inicial Mechanize. Alguém pode me apontar para um tutorial adequado para usar formulários e mecanizar ou me ajudar nessa questão em particular?

Anthony

Foi útil?

Solução

Eu acho que você está usando a biblioteca corretamente, mas o analisador parece estar tendo problemas com essa página em particular. Estou usando a biblioteca da mesma maneira em outra página ("http://flashcarddb.com/login") E isso não levanta um erro.

Outras dicas

Acabei de encontrar esse mesmo problema. A página que eu estava acessando a validação do W3C passou, então não achei que fosse um problema de marcação. No entanto, o HTML Tidy reclamou que a página tinha um dentro de a. Depois de consertar isso, Mechanize começou a funcionar.

Além disso, vi uma resposta a esse problema em uma lista de discussão. Eu só gostaria de observar que a adição de fábrica = mecanize.robustFactory () para mecanize.browser () não mudou o resultado.

Pista: defina mais sobre o seu mecanize.browser ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top