Python网络数据采集入门教程

在这篇文章中,我们将介绍Python提供的几乎所有的网络数据采集工具,你可以将本文看作是我们的《终极网络数据采集指南》的系列文章。我们将从最基本的工具到最先进的工具进行介绍,并将涵盖每一个的利弊。当然,我们并不能涵盖我们讨论的每个工具的所有方面,但是这篇文章应该足以让你了解哪些工具可以做什么,以及何时使用哪些工具。

注意:当我在这篇博客文章中谈论Python时,你应该假设我谈论的是Python。

0)网络基础知识

互联网是非常复杂的:在浏览器中查看一个简单的网页涉及到许多底层技术和概念。我并不打算解释所有的东西,但是为了从网络中提取数据,我将向你展示一些你必须理解的最重要的东西。

超文本传输协议(HTTP)

HTTP使用一个客户机/服务器模型,其中一个HTTP客户机(浏览器、你的Python程序、curl和Rqusts等)打开一个连接并向一个HTTP服务器(Nginx和Apach等)发送一条消息(“我想看那个页面:/product”)。

然后,该服务器使用一个响应(例如HTML代码)进行回答并关闭连接。HTTP被称为无状态协议,因为每个事务(请求/响应)都是独立的。例如,FTP是有状态协议。

基本上,当你在浏览器中输入一个网址时,HTTP请求看起来是这样的:

在这个请求的第一行,你可以看到很多东西:

这里使用了GET动词或方法,这表示我们是从特定的路径(:/product/)请求数据的。还有其他的HTTP动词,你可以在这里看到完整的列表。

HTTP协议的版本,在本教程中我们将专注HTTP1.

多个标头字段

以下是最重要的标头字段:

Host:服务器的域名,如果没有指定端口号,则默认为80。

Usr-Agnt:包含客户端发起的请求的信息,包括操作系统信息。在本例中,它是我的OSX系统上的网络浏览器(Chrom)。这个标头很重要,因为它要被用于统计(有多少用户访问了我的手机网站或桌面网站)或用于防止任何来自机器人的违规行为。因为这些标头是由客户端发送的,所以可以对它进行修改(称为“标头欺骗”),这正是我们使用scrapr所要做的——使scrapr看起来像一个普通的网络浏览器。

Accpt:可接受的作为响应的内容类型。有很多不同的内容类型和子类型:txt/plain、txt/html、imag/jpg和application/json等。

Cooki:nam1=valu1;nam=valu...,此标头字段包含一个名称-值对列表。它被称为会话cookis,用于存储数据。Cookis是网站用来验证用户身份,和/或在你的浏览器中存储数据的工具。例如,当你填写了一个登录表单时,服务器将检查你输入的凭据是否正确,如果正确,它将进行重定向并将一个会话cooki注入你的浏览器。然后,你的浏览器会将此cooki与随后的每个请求一起发送到该服务器。

Rfrrr:Rfrrr标头包含跳转到实际URL页面的源URL地址。这个标头很重要,因为网站使用这个标头来根据用户来源来改变自身的行为。例如,许多新闻网站都有付费订阅,你只能浏览文章的10%,但如果用户来自像Rddit这样的新闻聚合器,网站就会让你浏览全部内容。它们使用rfrrr来检查这个。有时,我们将不得不欺骗这个标头来获得我们想要提取的内容。

标头列表中还有很多字段,你可以在这里找到完整的标头列表:







































得了白癜风要怎么治
白癜风患者吃什么



转载请注明:http://www.shhjfk.com/jyqj/jyqj/9937.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了