大数跨境
0
0

想成为Python高手,必须看这篇爬虫原理介绍!

想成为Python高手,必须看这篇爬虫原理介绍! 码途钥匙
2024-07-13
0
导读:想成为Python高手,必须看这篇爬虫原理介绍!

点击上方【蓝字】关注我们

互联网犹如一张由无数站点与复杂交织的网络设备共同编织的宏大织锦。当我们通过浏览器这把钥匙,轻轻触碰并开启通往某个站点的门户时,那扇门后隐藏的HTML、JavaScript以及CSS等编程语言的宝藏便缓缓流淌而出,如同潺潺溪水汇入浏览器的池塘。在这片数字化的池塘中,浏览器化身为一位技艺高超的艺术家,它细心地解析这些代码的奥秘,用其内置的渲染引擎为这些代码赋予生命,最终将一幅幅色彩斑斓、生动活泼的网页画卷,栩栩如生地展现在我们的眼前,让我们得以畅游在浩瀚无垠的网络世界中。


01

爬虫是什么?

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序。

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

02

爬虫的基本流程

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

方式1:浏览器提交请求--->下载网页代码--->解析成页面方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中爬虫要做的就是方式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)

文件

03

http协议 请求与响应

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

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

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


04

request

1、请求方式:常见的请求方式:GET/POST


2、请求的URL

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

网页的加载过程是:

加载一个网页,通常都是先加载document文档,在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求



3、请求头

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

cookies:cookie用来保存登录信息

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


4.请求体

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

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

ps:

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

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


05

响应Response

1、响应状态码

200:代表成功

301:代表跳转

404:文件不存在

403:无权限访问

502:服务器错误


2、respone header

响应头需要注意的参数:

(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来

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


3、preview就是网页源代码

JSO数据

如网页html,图片

二进制数据等 





06

总结

1、总结爬虫流程:

爬取--->解析--->存储


2、爬虫所需工具

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

解析库:正则,beautifulsoup,pyquery

 存储库:文件,MySQL,Mongodb,Redis


想了解更多相关资讯

欢迎关注微信公众号“码途钥匙”

如若有任何疑问

也可以后台留言“学习”


【声明】内容源于网络
0
0
码途钥匙
欢迎来到 Python 学习乐园!这里充满活力,分享前沿实用知识技术。新手或开发者,都能找到价值。一起在这个平台,以 Python 为引,开启成长之旅,探索代码世界,共同进步。携手 Python,共赴精彩未来,快来加入我们吧!
内容 992
粉丝 0
码途钥匙 欢迎来到 Python 学习乐园!这里充满活力,分享前沿实用知识技术。新手或开发者,都能找到价值。一起在这个平台,以 Python 为引,开启成长之旅,探索代码世界,共同进步。携手 Python,共赴精彩未来,快来加入我们吧!
总阅读1
粉丝0
内容992