今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的同学有所帮助!

前言

简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前;

一、爬虫是什么?

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;

对于学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我,这是我的公众号:python教程(教程/解答/交流群/学习方法/就业信息)都有分享的

二、爬虫的基本流程:

用户获取网络数据的方式:

方式1:浏览器提交请求—>下载网页代码—>解析成页面

方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

爬虫要做的就是方式2;

1、发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等

Request模块缺陷:不能执行JS 和CSS 代码

2、获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

3、解析内容

解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

4、保存数据

数据库(MySQL,Mongdb、Redis)

文件

三、http协议 请求与响应

Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socketserver)

Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

ps:浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。

四、 request

1、请求方式:

常见的请求方式:GET / POST

2、请求的URL

url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定

url编码

https://www.baidu.com/s?wd=图片

图片会被编码(看示例代码)

网页的加载过程是:

加载一个网页,通常都是先加载document文档,

在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求

3、请求头

User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host;

cookies:cookie用来保存登录信息

注意: 一般做爬虫都会加上请求头

请求头需要注意的参数:

(1)Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)

(2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)

(3)cookie:请求头注意携带

4、请求体

请求体

如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到)

如果是post方式,请求体是format data

ps:

1、登录窗口,文件上传等,信息都会被附加到请求体内

2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post

五、 响应Response

1、响应状态码

200:代表成功

301:代表跳转

404:文件不存在

403:无权限访问

502:服务器错误

2、respone header

响应头需要注意的参数:

(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面

3、preview就是网页源代码

JSO数据

如网页html,图片

二进制数据等

六、总结

1、总结爬虫流程:

爬取—>解析—>存储

2、爬虫所需工具:

请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载)

python学习之python爬虫原理相关推荐

  1. python爬虫原理-python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

  2. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

    python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSg l7bz python100经典练习题 pyth ...

  3. 视频教程-爬虫微课5小时 Python学习路线-Python

    爬虫微课5小时 Python学习路线 十多年的Java和大数据开发和培训,精通Hadoop.Spark和Android开发,对于数据分析和挖掘有比较深的研究.曾在公司独立开发O2O项目e小时.网店项目 ...

  4. Python 学习 02 —— Python如何爬取数据

    文章目录 系列文章 二.Python 爬 虫 1.任务介绍 2.简介 3.基本流程 3.1.准备工作 3.1.1.分析页面 3.1.2.编码规范 3.1.3.导入模块 3.1.4.程序流程 3.2.获 ...

  5. 深圳Python学习:Python几大问,你想知道的答案都在这里!-千锋

    深圳Python学习:Python几大问,你想知道的答案都在这里!-千锋 人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面: 软件质量:在很大程度上,Python更注重可读 ...

  6. 菜菜的Python学习日记 | Python类实验代码分享

    系列索引:菜菜的Python学习日记 | Python从入门到入土详解 Python类实验代码分享 编写程序,实现以下功能. (1)创建员工类Employee,属性有姓名name.能力值ability ...

  7. Python学习之Python软件安装教程

    Python学习之Python软件安装教程 Python学习之Python软件安装教程

  8. [深度学习]Part1 Python学习进阶Ch23爬虫Spider——【DeepBlue学习笔记】

    本文仅供学习使用 Python高级--Ch23爬虫Spider 23. 爬虫Spider 23.1 HTTP基本原理 23.1.1 URI与URL 23.1.2 超文本 23.1.3 HTTP 和 H ...

  9. Python学习三: 爬虫高级技巧 与 模拟实战练习

    三大爬虫技巧 许多网站针对爬虫的访问都设置了一定的障碍,通过这三步技巧,轻松绕过部分的反爬虫限制. (1)设置程序休止时间 import time import random# 休止睡眠 1 秒 这里 ...

最新文章

  1. 给 Spring Boot 项目减减肥!18.18M 到 0.18M 是如何做到的?
  2. 【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数
  3. 想写Python爬虫?看这5个教程就行了!
  4. SAP UI5里的abap.js
  5. HadoopSourceAnalyse --- Nodemanager Container request handler
  6. new ext.toolbar控制按钮间距_新闻速递 | APT携新品金属按钮亮相宝博会,圈粉无数!...
  7. 从我的公众号谈执行力
  8. vue项目的docker部署
  9. python字体设置不了_设置字体样式
  10. xjoj挖金矿(二分验证)
  11. 性能测试监控TP50、TP99、TP999含义(99分位延时的含义)
  12. 360 技术岗秋招笔试原题(2022届)
  13. 音视频格式大全:stream type
  14. 如何“避雷”(化解风险)
  15. v-model 原理及使用
  16. linux可以打开浏览器嘛,Linux下怎样可以打开浏览器?
  17. 导致CreateWindow创建窗口失败的一种原因
  18. 文本框输入关键字提示
  19. linux查看php端口,Linux如何查看端口状态
  20. decoration

热门文章

  1. springboot+vue大学生租房平台 java校园房屋租赁系统 房东
  2. 40岁进入更年期的肌肤和面部出现一些症状调理的方法
  3. 交易ETF和杠杆基金B有哪些和股票操作上不同的,有哪些要注意的?
  4. Q4旺季还在继续,船长这六个小窍门助力圣诞购物季,你准备好了吗?
  5. html5适配ios的黑暗模式
  6. 使用docker-compose 大杀器来部署服务 上
  7. Glyph Metrics
  8. 如何增强自己的UI审美,如何提高自己的产品平面设计的能力呢?
  9. vb计算机图形学绘制钻石图案,Visual Basic 图形及图像处理 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
  10. Python学习(七)