python爬虫——基础知识

  • 一、网页基础知识
  • 二、爬虫的思路
    • 1、HTML文档(超文本)
  • 三、ROBOTS协议
  • 四、浏览器发送HTTP请求的过程
    • 1、http请求过程
    • 2、请求
  • 五、SSL连接错误
  • 六、HTML标签层级结构
  • 七、选择器
  • 八、会话Cookies
  • 九、代理的基本原理
    • 代理:实现IP 伪装,反反爬虫

一、网页基础知识

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

二、爬虫的思路

  • 提取数据来源

    • 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 ,让服务器误以为是代理服务器在请求向己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。

python爬虫——基础知识相关推荐

  1. (二)python爬虫基础知识续

    爬虫基础知识二 爬虫应用 数据爬取(微指数) 搜索引擎 app或网页的资源来源 浏览器能做的事情,原则上爬虫都能完成 12306抢票(机器学习可以识别验证码,或者在不需要验证码的合作网站爬取)(微信和 ...

  2. python爬虫基础知识

    今天学习了爬虫原理,网络通信基于URL统一资源定位器,这就是最简单最原始的爬虫. 欢迎加微信18599911861有更多python爬虫教程视频资源分享. 网络爬虫(又被称为网页蜘蛛,网络机器人,在F ...

  3. python基础知识整理-python爬虫基础知识点整理

    首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫 ...

  4. python爬虫基础(一)~爬虫概念和架构

    目录 1. 爬虫 1.1 概念 1.2 分类 2. 爬虫架构 2.1 url管理器 2.2 网页(html)下载(download)器 2.2.1 urllib下载html源码 2.2.2 reque ...

  5. 掌握Python爬虫基础,仅需1小时!

    随着互联网的发展,google.百度等搜索引擎让我们获取信息愈加方便.但需求总会不断涌现,纯粹地借助百度等收集信息是远远不够的,因此编写爬虫爬取信息的重要性就越发凸显. 比如有人为了炒股,专门爬取了多 ...

  6. python的基础知识可以应用到哪方面-Python基础知识

    python基础 python的诞生 2002年,python 2.x 2008年,python 3.x python的命名 马戏团的名称 python简介 简单.易学 持快速开发. 跨平台. 开源. ...

  7. Python爬虫核心知识-第二章:2.2 爬虫urllib.parse模块

    Python爬虫核心知识 第二章:2.2 爬虫urllib.parse模块 2.2 爬虫urllib.parse模块 Python中的urllib.parse模块中,提供了很多用来解析和重组URL的函 ...

  8. Python爬虫基础-如何获取网页源代码

    Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler),又称网页蜘蛛(Web Spider),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫程序根据一组特定的规则 ...

  9. python前端基础知识总结 及部分练习题

    python前端基础知识总结 知识总结 认识Python 发展历史 版本选择 python2.7是python2的最后一个版本,到2020年将不再维护 python3.6是python3最新的版本,是 ...

最新文章

  1. 关于SDC沙盒源代码加密
  2. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
  3. cordova降低版本10.0.0为8.1.2
  4. (十二)深入浅出TCPIP之Nagle算法
  5. revit模型怎么在手机上看_沙盘模型应该怎么看?一定要警惕这些问题
  6. 云原生应用程序_什么是云原生应用程序?
  7. mybatis if标签字符串判断
  8. CentOS 6.7编写Shell脚本实现简单跳板机功能
  9. Mac Book Pro桌面隐藏文件
  10. 2022-06-10:薯队长从北向南穿过一片红薯地(南北长M,东西宽N),红薯地被划分为1x1的方格, 他可以从北边的任何一个格子出发,到达南边的任何一个格子, 但每一步只能走到东南、正南、西南方向的
  11. 推广引流方法有哪些方式,平台有哪些?各平台引流方法分析!
  12. Android Xposed模块动态隐藏桌面图标
  13. 计算机毕业优秀作品展观后感,毕业设计作品展观后感
  14. 平均年薪23万!为什么却很少见程序员炫富?
  15. 阿里云oss搭建图床以及使用PicGO上传图片到图床
  16. python数据探索
  17. Google Earth Engine——概述
  18. 曲线提取数据Engauge Digitizer
  19. HTML实现九宫格延伸特效
  20. 如何制作魔方机器人-00绪论

热门文章

  1. 回溯法之递归回溯和迭代回溯
  2. android 低电量卡,Android11 增加低电量通知
  3. 关于linux开机出现initramfs的解决
  4. html中,table 的cellpadding cellspacing 属性失效
  5. 港口数字化转型不能盲目跟风
  6. python学了真的很有用吗-你还在盲目跟风学Python?你真的了解吗?某华大学教授有话要说...
  7. 计算机睡眠状态能挂游戏,windows10睡眠挂游戏
  8. PMIX ERROR: ERROR in file gds_ds12_lock_pthread.c
  9. csdn的,精彩连载!
  10. Intel 内部指令---AVX编程基础