python网络数据采集-穿越网页表单进行采集

一. 基本信息  

  如何获取登录窗口背后的信息,我们目前示例中的网络爬虫与大多数网站服务器进行数据交互时,都是用HTTP协议的GET方法去请求信息,这边我们将使用POST方法,把信息推送给网络服务器进行存储和分析。

  页面表单基本上就可以看成是一种用户提交POST请求的方式,且这种请求方式是服务器能够理解和使用的。就像网站的URL链接可以帮助用户发送GET请求一样,HTML表单可以帮助用户发出POST请求。当然,我们也可以使用一点代码来创建这些请求,然后通过网络爬虫把它们提交给服务器。

  Requests库就是这样一个擅长处理那些复杂HTTP请求、cookie、header(响应头和请求头)等内容的Python第三方库。

二.实现表单提交

  大多数网页表单都是由一些HTML字段、一个提交按钮、一个在表单处理完之后跳转的“执行结果”(表单action的值)页面构成,虽然这些HTML字段通常由文字内容构成,但是也可以实现文件上传或其他非文字内容。

  因为大多数主流网站都会在它们的robots.txt文件里注明禁止爬虫接入登录表单,所以为了安全起见,pythonscraping网站里放入了一个一组不同类型的表单和登录内容,这样可以进行爬虫采集了,最简单的表单位于http://pythonscraping.com/pages/files/form.html,表单内容如下:

<h2>Tell me your name!</h2>
<form method="post" action="processing.php">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname"><br>
<input type="submit" value="Submit" id="submit">
</form>
  需要注意一下,首先,两个输入字段firstname和lastname,这一点非常重要,字段的名称决定了表单被确认后要传送到服务器上的变量名称。如果你想要模拟表单提交数据的行为,你就需要保证那你的变量名称与字段名称是一一对应的。

   还需要注意表单的真实行为其实是发生在processing.php(绝度路径是http://pythonscraping.com/pages/files/processing.php)。表单任何POST请求都发生在这个页面上,并非表单本身所在的页面。切记:HTML表单的目的,只是帮助网站的访问者发送格式合理的请求,向服务器请求没有出现的页面。除非你要对请求的设计样式进行研究,否则不需要花太多时间在表单所在的页面上。

   用Requests库提交表单,只用四行代码就可以实现,包括导入库文件和打印内容的语句:

import requests
params={'firstname':'Peter','lastname':'Wang'}
r=requests.request('POST',"http://pythonscraping.com/pages/files/processing.php",data=params)
print(r.text)

表单提交之后,程序返回执行页面的源代码,包括这行内容:


此处,需要注意的是,脚本取名字不能叫request.py,不能与库同名,否者会一直报错,报找不到模块。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值