上一期我们讲解了数据标准化的内容。首先,我们对单词的出现频率进行排序,然后将一些大小写字母进行转换,以减少2-gram序列的重复。.当我们真正踏入网络数据采集的基础时,遇到的第一个问题可能是:“如何获取登录窗口后面的信息?”如今,网络正朝着页面交互、社交媒体、用户生成内容的趋势不断演变。表单和登录窗口是许多网站不可或缺的一部分。不过,这些内容还是比较容易处理的。至此,在前面的例子中,网络爬虫在与大多数网站的服务器进行交互时,都是使用HTTP协议的GET方法来请求信息的。在本文中,我们重点介绍POST方法,该方法将信息推送到Web服务器以供存储和分析。一个页面表单基本上可以看作是用户提交POST请求的一种方式,但是这种请求方式是可以被服务器理解和使用的。就像网站的URL连接如何帮助用户发出GET请求一样,HTML表单帮助用户发出POST请求。当然,我们也可以稍微麻点自己创建这些请求,然后通过网络爬虫提交给服务器。PythonRequests库可以用Python标准库来控制Web表单,但有时一点点语法糖可以让生活变得更甜蜜。但是当你想要做的不仅仅是urllib可以做的基本GET请求时,你可以看看Python标准库之外的第三方库。Requests库就是这样一个Python第三方库,擅长处理复杂的HTTP请求、cookies、headers(响应头和请求头)等,下面是Requests的创始人KennethRetiz对Python标准的看法库工具:Python标准库urllib2为您提供了大部分HTTP功能,但它的API非常差。这是因为它是经过多年逐步建立起来的,不同的时期要面对不同的网络环境。所以为了完成最简单的任务,他需要花费大量的工作(甚至是写出整个方法)。
事情不应该这么复杂,更不用说在Python中了。与任何第三方Python库一样,Requests库也可以使用其他第三方Python库管理器(例如pip)或直接下载Requests库源代码来安装。提交基本表单大多数Web表单由一些HTML字段、一个提交按钮和一个“执行结果”(表单操作的值)页面组成,该页面在处理完表单后重定向。虽然这些HTML字段通常由文本内容组成,但也可以实现文件上传或其他非文本内容。由于大多数主流网站都会在其robots.txt文件中注明不允许爬虫访问登录表单,相关介绍可参考这篇文章:爬虫系列:爬虫带来的道德风险与法律责任。例如下面是一个表单的源码: