Python网络数据采集入门教程

本文介绍了Python网络数据采集的基础知识,包括HTTP协议、网络请求、正则表达式、urllib3、LXML、requests、BeautifulSoup和Scrapy等工具的使用。重点讲述了HTTP请求的组成部分,以及如何使用Python进行手动请求和解析响应。文章还提到了Selenium和无UI模式的Chrome用于处理JavaScript渲染的内容。最后,文章总结了各种技术的特点,并提供了未来深入探讨的数据挖掘工具列表。
摘要由CSDN通过智能技术生成

 

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

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

0)网络基础知识

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

超文本传输协议(HTTP)

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

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

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

 

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

  • 这里使用了GET 动词或方法,这表示我们是从特定的路径(: /product/)请求数据的。还有其他的HTTP动词,你可以在这里看到完整的列表。
  • HTTP协议的版本,在本教程中我们将专注HTTP 1.
  • 多个标头字段

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

  • Host: 服务器的域名,如果没有指定端口号,则默认为80。
  • User-Agent: 包含客户端发起的请求的信息,包括操作系统信息。在本例中,它是我的OSX系统上的网络浏览器(Chrome)。这个标头很重要,因为它要被用于统计(有多少用户访问了我的手机网站或桌面网站)或用于防止任何来自机器人的违规行为。因为这些标头是由客户端发送的,所以可以对它进行修改(称为“标头欺骗”),这正是我们使用scraper所要做的——使scraper看起来像一个普通的网络浏览器。
  • Accept: 可接受的作为响应的内容类型。有很多不同的内容类型和子类型:text/plain、text/html、image/jpeg和application/json等。
  • Cookie : name1=value1;name2=value2... ,此标头字段包含一个名称-值对列表。它被称为会话cookies,用于存储数据。Cookies是网站用来验证用户身份, 和/或在你的浏览器中存储数据的工具。例如,当你填写了一个登录表单时,服务器将检查你输入的凭据是否正确,如果正确,它将进行重定向并将一个会话cookie注入你的浏览器。然后,你的浏览器会将此cookie与随后的每个请求一起发送到该服务器。
  • Referrer: Referrer标头包含跳转到实际URL页面的源URL地址。这个标头很重要,因为网站使用这个标头来根据用户来源来改变自身的行为。例如,许多新闻网站都有付费订阅,你只能浏览文章的10%,但如果用户来自像Reddit这样的新闻聚合器,网站就会让你浏览全部内容。它们使用referrer来检查这个。有时,我们将不得不欺骗这个标头来获得我们想要提取的内容。

标头列表中还有很多字段,你可以在这里找到完整的标头列表:https://en.wikipedia.org/wiki/List_of_HTTP_header_fields。

服务器会像这样进行响应:

 

在第一行,我们有一个新的信息,HTTP代码 200 OK。这意味着此请求已经成功。对于请求标头来说,有很多HTTP代码,分为四个常见类:2XX表示请求成功、3XX表示重定向、4XX表示请求异常(最出名的是404 Not found)和5XX表示服务器错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值