在python或解析html页面中从html页面提取表单键值对

raj*_*aju 5 html python string parsing html-parsing

我想在html页面中提取某些表单元素的键值对

例如

name="frmLogin" method="POST" onSubmit="javascript:return validateAndSubmit();" action="TG_cim_logon.asp?SID=^YcMunDFDQUoWV32WPUMqPxeSxD4L_slp_rhc_rNvW7Fagp7FgH3l0uJR/3_slp_rhc_dYyJ_slp_rhc_vsPW0kJl&RegType=Lite_Home"
Run Code Online (Sandbox Code Playgroud)

而原来的线是

<form name="frmLogin" method="POST" onSubmit="javascript:return validateAndSubmit();" action="TG_cim_logon.asp?SID=^YcMunDFDQUoWV32WPUMqPxeSxD4L_slp_rhc_rNvW7Fagp7FgH3l0uJR/3_slp_rhc_dYyJ_slp_rhc_vsPW0kJl&RegType=Lite_Home">
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以安全地获得键和值对.我尝试使用空格拆分然后使用'='字符,但引号内的字符串也可以有'='.

是否有任何不同类型的拆分方法,也可以处理报价?

str*_*nac 7

使用解析库(如lxml.html)来解析html.

图书馆将有一种简单的方式让您获得所需,可能不会超过几个步骤:

  1. 使用解析器加载页面

  2. 选择要操作的表单元素

  3. 询问你想要的数据

示例代码:

>>> import lxml.html
>>> doc = lxml.html.parse('http://stackoverflow.com/questions/13432626/split-a-s
tring-in-python-taking-care-of-quotes')
>>> form = doc.xpath('//form')[0]
>>> form
<Element form at 0xbb1870>
>>> form.attrib
{'action': '/search', 'autocomplete': 'off', 'id': 'search', 'method': 'get'}
Run Code Online (Sandbox Code Playgroud)