大家如何提取 html 中的表单?(Python)

2015-02-23 21:06:14 +08:00
 tdifg

最近没什么事,重做一下自己的爬虫。于是想加一个表单提取的功能,我目的是能直接传入html他就能解析出表单的结构,就是个类似下面的一个结果:
{
'post_url':'',
'input_field1':'',

'input_field2':'',
'select_field1':'',
...

}

查资料发现如下几个方法:
1. mechanize,ghost.py
优点:方便,ghost还支持js解析
缺点:慢,非标准库,处理方式不符合要求(要重新发起请求)
2. 正则
优点:能符合要求
缺点:错误率高

请问大家是怎么匹配页面中的表单?

8230 次点击
所在节点    Python
6 条回复
aec4d
2015-02-23 21:26:54 +08:00
用pyquery 如果你喜欢用jQuery的话
banbanchs
2015-02-23 21:59:08 +08:00
用解析html的库:pyquery、Beautiful Soup、lxml什么的把<form>找到,解析里面的input标签就好了
tdifg
2015-02-23 22:55:06 +08:00
@banbanchs
@aec4d
恩,我知道这些,而且以前就是用这些库的。但是主要这次想用标准库解决,因为部署在机器上的时候第三方库不太方便(想扩展成分布式的)。而且,话说以前用lxml的时候老是因为编码,奇怪的html结构什么的出错。或者自己写一个xml解析?
chinvo
2015-02-24 10:13:24 +08:00
@tdifg 只有xhtml嚴格準訓xml規範,一視同仁地用xml解析可能會出現問題。你可以用正則。
zhanglp888
2015-02-24 11:21:20 +08:00
先用tidy,将你要抓取的html整理好了,再写正则,或用pyquery
基本上不会太大问题
tdifg
2015-02-24 15:04:09 +08:00
恩,之前想麻烦了,现在直接正则出form,然后正则input,最后逐条正则里面的属性,貌似可以达成目标了。哎,到底是没学过html啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX