使用Python / mechanize select_form()时出错?

时间:2010-01-14 22:05:28

标签: python mechanize web-scraping

我正在尝试从网站上删除一些数据。 我想写的脚本应该得到页面的内容:

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

应模拟用户通过其他选项以及日期并模拟点击Go然后在获取数据后应使用后退功能。

目前我一直试图选择此附加站点选项:

            <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的正确教程或帮助我解决这个特定的问题吗?

安东尼

3 个答案:

答案 0 :(得分:1)

我认为您正在使用该库,但解析器似乎遇到了该特定页面的问题。我在另一个页面(“http://flashcarddb.com/login”)上以相同的方式使用该库,它不会引发错误。

答案 1 :(得分:1)

我刚遇到同样的问题。我访问的页面通过了W3C验证,所以我认为这不是标记问题。然而,html tidy抱怨该页面内有一个。一旦我解决了这个问题,机械化就开始工作了。

另外,我在邮件列表中看到了对此问题的回复。我只想指出,将factory = mechanize.RobustFactory()添加到mechanize.Browser()并没有改变结果。

答案 2 :(得分:0)

线索:定义有关你的mechanize.Browser()

的更多信息