python爬虫——基础知识

一、网页基础知识

在编写爬虫程序之前首先要了解一些必要的网页知识

二、爬虫的思路

  • 提取数据来源
    • HTML文档
    • josn 数据

1、HTML文档(超文本)

每一份网页都是一份HTML文档,是一种文本标记语言
由一系列标签组成:(如图)
我们要爬取的内容大部分都是便签里的 .text文本
在这里插入图片描述
常规操作
* 1、打开一个网页,即通过了Http协议,对一个资源进行了请求返还一份HTML文档
* 2、浏览器 进行文档的渲染,形成一个网页
* 3、模拟浏览器,发送一份请求,获取文档,提取需要的数据(爬虫要做的)

通用爬虫、聚焦爬虫工作流程:
在这里插入图片描述

三、ROBOTS协议

Robots协议:网站通过Robots协议告诉 搜索引擎 哪些页面可以抓取,那些页面不可以抓取
例如:http://www.tobo.com/tobots.txt(淘宝网的Robots协议文档)
看一下这个协议的内容:
在这里插入图片描述
限制百度引擎下的爬虫爬取淘宝网的全部内容

这个是通过反爬虫策略实现的,
对于反爬虫策略,我们也有 反反爬虫策略,搞他!

四、浏览器发送HTTP请求的过程

http 超文本传输协议
https 用SSL层加密的超文本传输协议

浏览器渲染出来的页面 和 爬虫请求的页面并不一样
在这里插入图片描述

1、http请求过程

比如:https://www.baidu.com/,用Chrome 浏览器的开发者模式下的Network 监听组件来做下演示,它可以显示访问当前请求网页时发生的所有网络请求和响应。

  1. 打开Chrome 浏览器,输入链接https://www.baidu.com/
  2. 右击并选择“检查”项,即可打开浏览器的开发者工具,结果如下图所示
    在这里插入图片描述
  3. 第一列Name :请求的名称,一般会将URL 的最后一部分内容当作名称。
  4. 第二Status :响应的状态码,这里显示为200 ,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
  5. 第二Status :响应的状态码,这里显示为200 ,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
  6. 第三列Type :请求的文梢类型。这里为document ,代表我们这次请求的是一个HTML 文档,内容就是一些HTML 代码。
  7. 第四列Initiator :请求源。用来标记请求是由哪个对象或进程发起的。
  8. 第五列Size :从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache 。
  9. 第六列Time :发起请求到获取响应所用的总时间。
  10. 第七列Waterfall:网络请求的可视化瀑布流。

2、请求

在爬取数据的时候要模拟浏览器请求,那么就要创建一个请求
请求:由客户端向服务端发出,可以分为4 部分内容:请求方法(Request Method )、请求的网址( Request URL )、请求头(Request Headers )、请求体(Request Body )

  1. 请求方法(Request Method )
    常见的请求方法有两种:GET 和POST 。
    • 在浏览器中直接输入URL 并回车,这便发起了一个GET 请求,请求的参数会直接包含到URL里
      例如,在百度中搜索Python ,这就是一个GET 请求,链接为https://www.baidu.corn/s?wd= Python ,其中URL 中问号后面为请求的参数信息,这里参数wd表示要搜寻的关键字。
    • POST 请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL 中。
  • GET 和POST 请求方法有如下区别

    • GET 请求中的参数包含在URL 里面,数据可以在URL 中看到,而POST 请求的URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中
    • GET 请求提交的数据最多只有1024 字节,而POST 方式没有限制。
  • 一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用GET 方式请求的话,密码就会暴露在URL 里面,造成密码泄露,所以这里最好以POST 方式发送。

  • 上传文件时,由于文件内容比较大,也会选用POST 方式。


  1. 请求的网址( Request URL )
    请求的网址,即统一资惊定位符URL ,它可以唯一确定我们想请求的资源。

  1. 请求头(Request Headers )
    请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。
    请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie 、Referer 、User-Agent 等。下面简要说明一些常用的头信息。
    • Accept :请求报头域,用于指定客户端可接受哪些类型的信息。
    • Accept-Language :指定客户端可接受的语言类型。
    • Accept-Encoding :指定客户端可接受的内容编码。
    • Host :用于指定请求资源的主机IP 和端口号,其内容为请求URL 的原始服务器或网关的位置。从HTTP 1. l 版本开始,请求必须包含此内容。
    • Referer :此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
    • User-Agent :简称UA ,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别为爬虫。
    • Content-Type :也叫互联网媒体类型(Internet Media Type )或者MIME 类型,在HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html 代表HTML 格式,image/gif代表GIF 图片,app lication/json 代表JSON 类型,更多对应关系可以查看此对照表:http://tool.oschina.neνcommons 。
      在爬虫中,如果要构造POST 请求,需要使用正确的Content-Type ,并了解各种请求库的各个参数设置时使用的是哪种Content-Type ,不然可能会导致POST 提交后无法正常响应。
    • Cookie :也常用复数形式Cookies ,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。
      例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies 的功劳。Cookies 里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies 并将其发送给服务器,服务器通过Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。*

  1. 请求体
    请求体-般承载的内容是POST 请求中的表单数据,而对于GET 请求,请求体则为空。

五、SSL连接错误

http 超文本传输协议
https 用SSL层加密的超文本传输协议
当我呢执行爬虫传入一个访问请求时可能会遇到:

  • 没有SSL层加密,被浏览器提示不安全
  • 有些网站使用了https,还是会提示不安全,是因为此网站的CA证书是自行签发的,不被CA机构信任

爬取此类站点,要设置忽略证书选项,否则会提示SSL连接错误

六、HTML标签层级结构

在HTML 中,所有标签定义的内容都是节点,它们构成了一个HTML DOM 树。
在这里插入图片描述

七、选择器

CSS 选择器会根据不同的节点设置不同的样式规则,来定位节点
在这里插入图片描述
更多定位规则可查看:https://www.runoob.com/cssref/css-selectors.html

八、会话Cookies

Cookies的作用和维持
在这里插入图片描述

九、代理的基本原理

反反爬虫:
在这里插入图片描述
对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP 访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP ,这样会给爬取带来极大的不便

代理:实现IP 伪装,反反爬虫

使用代理隐藏真实的IP ,让服务器误以为是代理服务器在请求向己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅家的北极熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值