Python爬虫实战N06网页表单爬取(RPA初阶)图文教程

2024-12-24阅读数:235
上一篇:C02 - Python爬虫练习通关提示
下一篇:Python爬虫实战N05CSS Sprites (雪碧图)反爬图文教程

打开Python爬虫实战练习页面网页表单爬取(RPA初阶)_N06_Spiderbuf,可以看到页面是由一些常见的表单控件组成的,有些表单控件有值,有些没有。

网页表单通常由标签 <form> 标签对包含起来,按照HTML5的标准,表单控件通常有text、email、password、url、number、range、Date pickers (date, month, week, time, datetime, datetime-local)、search、color、tel、textarea等组成,大部分是以 <input>标签包含,由属性type控件类型,如:

<form>
    <input type="text" name="username" value="spiderbuf" /><!-- 这里是文本 -->
    <input type="email" name="email" value="test@spiderbuf.cn" /><!-- 这里是邮箱 -->
    <input type="password" name="password" /><!-- 这里是密码-->
    ...
</form>

其中的 name 属性值是必须的且是唯一的,要不然表单提交时将不会出现在 payload 里面,从而无法提交到后台。所以要获取表单的值,最好的方法就是根据 name 属性值定位,然后获取该控件的 value 属性的值。

# 以下是获取 input name 属性的代码
attr_name = input.attrib['name'] if 'name' in input.attrib else ''

通过 xpath 表达式 //input 就能获取到所有 input 元素,然后遍历解析 name 属性及获取 value 属性值。

root = etree.HTML(html)
inputs = root.xpath('//input')

for input in inputs:
    attr_name = input.attrib['name'] if 'name' in input.attrib else ''

特殊的控件有选项类,是由 <select> 标签包含的,需要在 input 列表外单独处理。

RPA(流程自动化机器人)除了要能读取表单数据外,还需要写入,同样是通过操作 input 等控件的 value 属性值来进行。

完整示例代码:示例代码