⽹络爬⾍(⼜被称为⽹⻚蜘蛛,⽹络机器⼈)就是模拟客户端发送⽹络请求, 接收请求响应,⼀种按照⼀定的规则,⾃动地抓取互联⽹信息的程序。 只要是浏览器能作的事情,原则上,爬⾍都可以作html
为何须要爬虫web
Python作爬虫有哪些优点浏览器
PHP : 对多线程、异步支持不太好缓存
Java : 代码量大,代码笨重安全
C/C++ : 代码量大,难以编写服务器
Python : 支持模块多、代码简介、开发效率高 (scrapy框架)网络
Python如何爬取网页上的数据多线程
网页三大特征:app
爬虫设计思路:框架
通用爬虫和聚焦爬虫工做流程
当计算机之间进行数据通信时,应用程序为相互识别而被分配的编号,即端口号,又称逻辑端口
通常数据通信可分为:
HTTP通讯由两部分构成:客户端请求消息 和 服务器响应消息
客户端HTTP请求
请求格式:请求⾏、请求头部、空⾏、请求数据
HTTP请求主要分为 GET与POST方式
URL(统一资源定位符)组成
例如:https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识外,其余的所有使用% 加 十六进制码进行编码)
经常使用请求报头
Host (主机和端⼝号)
对应⽹址URL中的Web名称和端⼝号,⽤于指定被请求资源的Internet 主机和端⼝号,一般属于URL的⼀部分。
Connection (连接类型)
表示客户端与服务链接类型
Upgrade-Insecure-Requests (升级为HTTPS请求)
升级不安全的请求,意思是会在加载 http 资 源时⾃动替换成 https 请求,让浏览器再也不显示https⻚⾯中的http请求警报。
User-Agent (浏览器名称)
是客户浏览器的名称
Accept (传输⽂件类型)
指浏览器或其余客户端能够接受的MIME(Multipurpose Internet Mail Extensions(多⽤途互联⽹邮件扩展))⽂件类型,服务器能够根据它判 断并返回适当的⽂件格式。
*/*:表示什么均可以接收。
image/gif:代表客户端但愿接受GIF图像格式的资源; Accept:text/html:代表客户端但愿接受html⽂本。
text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器⽀持的 MIME 类型分别是 html⽂本、xhtml和 xml⽂档、全部的图像格式资源。
Referer (⻚⾯跳转处)
代表产⽣请求的⽹⻚来⾃于哪一个URL,⽤户是从该 Referer⻚⾯访问 到当前请求的⻚⾯。这个属性能够⽤来跟踪Web请求来⾃哪一个⻚⾯,是从什么 ⽹站来的等。
Accept-Encoding (⽂件编解码格式)
指出浏览器能够接受的编码⽅式。编码⽅式不一样于⽂件格 式,它是为了压缩⽂件并加速⽂件传递速度。浏览器在接收到Web响应以后先 解码,而后再检查⽂件格式,许多情形下这能够减小⼤量的下载时间。
Accept-Language (语⾔种类)
指出浏览器能够接受的语⾔种类,如en或en-us指英 语,zh或者zh-cn指中⽂,当服务器可以提供⼀种以上的语⾔版本时要⽤到。
Accept-Charset (字符编码)
指出浏览器能够接受的字符编码。
Cookie
浏览器⽤这个属性向服务器发送Cookie。Cookie是在浏览器中寄存 的⼩型数据体,它能够记载和服务器相关的⽤户信息
Content-Type (POST数据类型)
POST请求⾥⽤来表示的内容类型。
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
服务器HTTP响应
响应格式:状态⾏ 、 消息报头 、 空⾏ 、 响应正⽂
经常使用响应报头
Cache-Control (must-revalidate, no-cache, private)
这个值告诉客户端,服务端不但愿客户端缓存资源,在下次请求资源时,必须 要重新请求服务器,不能从缓存副本中获取资源。
Connection (keep-alive)
这个字段做为回应客户端的Connection:keep-alive,告诉客户端服务器的 tcp链接也是⼀个⻓链接,客户端能够继续使⽤这个tcp链接发送http请求。
Content-Encoding (gzip)
告诉客户端,服务端发送的资源是采⽤gzip编码的,客户端看到这个信息后, 应该采⽤gzip对资源进⾏解码。
Content-Type (text/html;charset=UTF-8)
告诉客户端,资源⽂件的类型,还有字符编码,客户端经过utf-8对资源进⾏解 码,而后对资源进⾏html解析。一般咱们会看到有些⽹站是乱码的,每每就是 服务器端没有返回正确的编码。
Date (Thu, 02 Jan 2020 06:32:55 GMT)
这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。 http协议中发送的时间都是GMT的,这主要是解决在互联⽹上,不一样时区在相 互请求资源的时候,时间混乱问题。
响应状态码