大家都说现在是“大数据时代”,然而数据从何而来?

如果需要的数据市场上没有,或者不愿意花钱购买,可以通过网络爬虫的方式从万维网上抓取想要的数据。

1. 爬虫的分类

根据使用场景不同,网络爬虫可以分为通用爬虫聚焦爬虫两种。

2. 爬虫的基础-HTTP协议基本原理

网络爬虫抓取数据的过程可以理解为模拟浏览器操作的过程,因此在学习爬虫之前要先学习HTTP协议的原理。

HTTP协议(Hyper Text Transfer Protocol, 超文本传输协议):从万维网服务器传送超文本到本地浏览器的一种传送协议。

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer):是HTTP的安全版,在HTTP下加入了SSL层。

SSL(Secure Socket Layer安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。

HTTP的端口号为:80,HTTPS的端口号为:443。

  • HTTP的请求与响应

使用chrome浏览器的开发者模式能够清晰地观察HTTP的请求与响应过程。以访问http://www.baidu.com为例,来观察浏览器与服务器之间的交互过程,在浏览器页面右键选择检查,打开浏览器的开发者工具。选择network就可以看到发送请求与接收响应的过程。

点击左侧的name下的条目,可以看到更详细的信息,包括General、Response Headers和Request Headers。

一个典型的HTTP请求示例:

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.baidu.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: BAIDUID=04E4001F34EA74AD4601512DD3C41A7B:FG=1; BIDUPSID=04E4001F34EA74AD4601512DD3C41A7B; PSTM=1470329258; MCITY=-343%3A340%3A; BDUSS=nF0MVFiMTVLcUh-Q2MxQ0M3STZGQUZ4N2hBa1FFRkIzUDI3QlBCZjg5cFdOd1pZQVFBQUFBJCQAAAAAAAAAAAEAAADpLvgG0KGyvLrcyfrG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFaq3ldWqt5XN; H_PS_PSSID=1447_18240_21105_21386_21454_21409_21554; BD_UPN=12314753; sug=3; sugstore=0; ORIGIN=0; bdime=0; H_PS_645EC=7e2ad3QHl181NSPbFbd7PRUCE1LlufzxrcFmwYin0E6b%2BW8bbTMKHZbDP0g; BDSVRTM=0

HTTP请求主要分为GET和POST两种方法:

(1)GET是从服务器上获取数据,POST是向服务器传送数据

(2)GET请求参数显示,会显示在浏览器的网址上,即GET请求的参数是URL的一部分。

(3)POST请求参数在请求体中,消息长度没有限制而且以隐式的方式发送,请求的参数包含在Content-Type消息头里,指明消息的媒体类型和编码。

常用的请求头:

(1)Host(主机和端口号)

Host: 对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号。

(2)Connection(连接类型)

Connection: 表示客户端与服务器的连接类型。

HTTP/1.1使用keep-alive作为默认值。

client发起一个包含Connection:keep-alive的请求,如果server支持keep-alive,回复一个Connection:keep-alive的响应,不关闭连接。如果server不支持keep-alive,回复一个Connection:close的响应,不关闭连接。如果client收到Connection:keep-alive的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

(3)Upgrade-Insecure-Requests(升级为HTTPS请求)

(4)User-Agent(浏览器名称)

(5)Accept(传输文件类型)

Accept: 指浏览器可以接受的MIME文件类型,服务器可以根据它判断并返回适当的文件格式。

(6)Referer(页面跳转处)

Referer: 表明产生请求的网页来自于哪个URL,用户是从该Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自于哪个页面,是从哪个网站来的。

有时候遇到下载某网站的图片,需要对应的Referer,否则无法下载,就是因为网站做了防盗链,原理是根据Referer去判断是否是本网站的地址,如果不是就拒绝,如果是就可以下载。

(7)Accept-Encoding(文件编解码格式)

(8)Accept-Language(语言种类)

(9)Accept-Charset(字符编码)

(10)Cookie

Cookie: 浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

(11)Content-Type(POST数据类型)

服务器端HTTP响应:

HTTP响应由四个部分组成,分别是:状态行、消息报头、空行、响应正文

HTTP/1.1 200 OK
Server: Tengine
Connection: keep-alive
Date: Mon, 25 Jun 2018 11:05:18 GMT
Cache-Control: no-cache
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=20
Vary: Accept-Encoding
Pragma: no-cache
X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395
Content-Length: 180945<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ....

常用的响应头:

(1)Cache-Control: must-revalidate, no-cache, private

Cache-Control: 这个值用来告诉客户端,服务端不希望客户端缓存资源,在下次请求资源时,必须要重新请求服务器,不能从缓存副本中获取资源。

(2)Date

Date: 这是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。HTTP协议中发送的时间都是GMT的,为了解决不同时区在相互请求资源时时间混乱的问题。

其余的响应字段从字面意思应该都能理解。

响应状态码:

(1)100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程

(2)200-299:表示服务器成功接受请求并完成整个处理过程,200(请求成功)

(3)300-399:为完成请求客户需进一步细化需求,302(所请求的页面已经临时转移至新的URL)

(4)400-499:客户端的请求有错误,404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)

(5)500-599:服务器端出现错误,500(请求未完成,服务器遇到不可预知的情况)

Cookie 和 Session:

HTTP的连接是无状态的,服务器和客户端的交互仅限于请求/响应过程,在下一次请求时,服务器会认为新的客户端。为了维护它们之间的连接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息。

Cookie:通过在客户端记录的信息确定用户的身份。

Session:通过在服务器端记录的信息确定用户的身份。

python3网络爬虫-介绍相关推荐

  1. 《Python3网络爬虫开发实战(第二版)》内容介绍

    这是「进击的Coder」的第 505 篇分享 作者:崔庆才 大家好,本节首先来预告下即将出版的<Python3网络爬虫开发实战(第二版)>的主要内容. 由于我已经把书的总体的内容介绍写在了 ...

  2. 《Python3网络爬虫开发实战(第二版)》上市了!!!!

    " 阅读本文大概需要 5 分钟. " 告诉大家一个好消息:我的好朋友崔庆才老师的<Python3网络爬虫开发实战(第二版)>现在正式上市了!!!! 没错,就是这本: 就 ...

  3. 【Python3网络爬虫开发实战】4-解析库的使用-3 使用pyquery

    在上一节中,我们介绍了Beautiful Soup的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适应?有没有觉得它的CSS选择器的功能没有那么强大? 如果你对Web有所涉及, ...

  4. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  5. 【Python3网络爬虫开发实战】 1.7-App爬取相关库的安装

    [摘要] 除了Web网页,爬虫也可以抓取App的数据.App中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的.由于App没有浏览器这种可以比较直观地看到后台请求的工具 ...

  6. tensorflow精进之路(十八)——python3网络爬虫(中)

    1.概述 上一节简单的介绍了一些python3网络爬虫的知识,这一节就运用上一节的知识写个小demo,用于爬去汽车之家网站的汽车厂商及车型名称. 2.打开待爬取网页 打开汽车之家官网, https:/ ...

  7. Python3网络爬虫快速入门实战解析

    Python3网络爬虫快速入门实战解析 标签: python网络爬虫 2017-09-28 14:48 6266人阅读 评论(34) 收藏 举报 分类: Python(26) 作者同类文章X 版权声明 ...

  8. 【崔庆才教材】《Python3网络爬虫开发实战》3.4爬取猫眼电影排行代码更正(绕过美团验证码)

    前情提要 最近有七八个小伙伴私信问我说崔大神的<Python3网络爬虫开发实战>教材中 "3.4爬取猫眼电影排行" 一节的代码目前不能用. 首先附上崔大神的github ...

  9. python3网络爬虫开发实战pdf 崔庆才 百度网盘分享

    python3网络爬虫开发实战pdf 崔庆才 百度网盘分享 介绍了如何利用Python 3开发网络爬虫,环境配置和基础知识,然后讨论了urllib.requests.正则表达式.Beautiful S ...

  10. 《Python3网络爬虫开发实战》第二波抽奖赠书活动来了!

    嗨~ 给大家重磅推荐一本书!上市两月就已经重印 4 次的 Python 爬虫书!它就是由静觅博客博主崔庆才所作的<Python3网络爬虫开发实战>!!!同时文末还有抽奖赠书活动,不容错过! ...

最新文章

  1. 全局事件-广播(Broadcast)
  2. WIN7系统激活后无法正常启动
  3. html链接是什么意思,html中url什么意思?怎么用?
  4. MachineLearning(12)- RNN-LSTM-tf.nn.rnn_cell
  5. 音视频开发(13)---视频监控系统必须知道的一些基础知识
  6. mysql in 临时表_什么时候会用到临时表?MySQL临时表的使用总结
  7. 装linux系统为什么会黑屏_Ubuntu安装时出现黑屏问题的解决
  8. 【JSP】错误页面处理
  9. 2022年十大数据可视化工具,值得收藏
  10. 朴实无华!注意力机制神经网络解析
  11. String.intern()
  12. 若依分离版部署遇到的问题
  13. LIS的O(nlogn)算法(二分)
  14. excel表计算机实践操作,Excel电子表格计算机实践任务书
  15. 2020诺贝尔文学奖得主,死亡的诗歌
  16. android方向触摸事件,Android触摸事件如何传递?
  17. 计算机二级(c语言)重难点归纳--公共基础部分--计算机系统
  18. 17岁高中生证明著名数学难题,因此被MIT录取
  19. linux i2c 内核初始io,linux I2C驱动移植
  20. 2019 年 5 月移动互联网全行业排行榜

热门文章

  1. springboot+pageoffice实现Word在线编辑
  2. hprose for java 教程_Hprose for Java怎么使用?Hprose for Java使用教程
  3. dtcms php,[.net学习]dtcms从前台Flash XSS到后台Getshell
  4. win7 配置JDK环境变量
  5. 求极限的若干方法经验和教训
  6. 单片机音频谱曲软件_单片机音乐代码转换工具(Music Encode)
  7. ubuntu system setting no everthing
  8. 基于python tkinter 实现的类似于everthing的文件检索工具
  9. 时间管理之-----《暗时间》-刘未鹏
  10. HTML+JS 实现下载图片到本地