如何用lxml解析带表单的结果页面?

1 投票
1 回答
2174 浏览
提问于 2025-04-16 03:29

我在尝试解析一个有表单的二级页面。我使用了这个链接里的示例代码:http://blog.ianbicking.org/2007/09/24/lxmlhtml/。在我的测试中,我使用了这个网址:http://www.infofer.ro/。就像示例中那样,我使用了这些值:

>>> pprint(form.form_values())
[('cboData', '8/30/2010'),
 ('txtPlecare', 'Bucuresti Nord'),
 ('txtSosire', 'Constanta'),
 ('tip', 'GO'),
 ('lng', '1')]

结果是通过这个获取的:

result = parse(submit_form(form)).getroot()

这是另一个页面,里面有另一个表单。我尝试了这样的代码:

>>> page2=parse(result).getroot()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/lxml/html/__init__.py", line 661, in parse
    return etree.parse(filename_or_url, parser, base_url=base_url, **kw)
  File "lxml.etree.pyx", line 2706, in lxml.etree.parse (src/lxml/lxml.etree.c:49945)
  File "parser.pxi", line 1525, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:72026)
TypeError: cannot parse from 'HtmlElement'

我该如何解析二级页面中的表单呢?

谢谢。

1 个回答

2

这个 getroot 方法并不是给你另一个“页面”,而是给你一个 lxml.html.HtmlElement 的实例。

你不需要再去 parse(解析)一次,因为你已经在 result 变量里得到了所有需要的东西。

撰写回答