【python|python爬虫--爬虫前奏】大家好,我是白菜胡萝丸子
人生苦短,Python当歌
文章图片
什么是爬虫? 采集信息的程序一般称为网络爬虫,其行为一般是先"爬"到对应的网页上,再把需要的信息“铲”下来。
形象的比喻:采集程序就像一只辛勤的小蜜蜂,它飞到花(目标网页)上,采集花粉(需要的信息),经过处理(数据清洗、储存)变成蜂蜜(可用的数据)。
为什么要用Python写爬虫程序
先对于其他编程语言,它代码简洁,开发效率高,支持的模块多,相关的HTTP请求模块和HTTP解析模块非常丰富。
爬虫工具
- 谷歌浏览器
- pycharm 2021
https协议,是http协议加密的版本。https = http + ssl
什么是URL? URL是Uniform Resource Locator的简写,中文意思是统一资源定位符,一个URL是由一下几个部分组成的
schem://host:port/path/?query-string*#anchor
- schem:代表访问的协议,一般是http或https以及ftp等
- host:主机名,域名,比如www.baidu.coom
- port:端口号,当你访问一个网站的时候,浏览器默认使用80端口。
- path:查找路径,比如:www.baidu.com/trending/now后面的trending/now就是path
- query-string:查询字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查询字符串
- anchor:瞄点,后台一般不用管,前端用来做页面定位的
在浏览器中请求一个url,浏览器会对这个url进行一个编码,除英语字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。也即是说,我们写代码构造程序是url出现非(英语字母,数字和部分符号)要转换称百分号+十六进制码值
现在需要我们写代码模拟浏览器的行为,把你需要的文件给请求下来。
怎么样编写代码呢?
常用的请求方法
在http协议中定义了八种请求方法,而我们只用两种请求方法–get请求和post请求
1.get请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候用get请求
2.post请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post请求
以上时在网站开发常用的两种方法,并且一般情况下都会遵循使用原则,但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get方法的请求一定要改成post请求,这个要视情况而定
请求头常见的参数(作用伪装成浏览器身份,不让服务器认为你是爬虫,简单点说,为了反扒)
在http协议中,向服务器发送一个请求,数据分为三部分,第一个是把数据放在url中,第二个是把数据放在body当中,第三个是放在head中,简单介绍爬虫请求头常用的参数
1.User-Agent:浏览器名称,为了给爬虫装上身份,来伪装我们的爬虫
2.Referer:表明当前这个请求是从哪个url过来的,这个一般也可以用来做反爬虫技术,如果不是从指定页面过来的,那么就不做相关的响应
3.Cookie:http协议是无状态的,也就是同一个人发送两次请求,服务器没有能力知道这两个请求是否是同一个人,因此这时候就用cookie来做标识,一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了
响应状态码 200:请求正常
302:临时重定向,比如在访问一个需要登录页面的时候,而此时没有登录,那么就会重定向到登录页面
400:请求的url在服务器上找不到,换句话说就是请求url错误
403:服务器拒绝访问,权限不够
推荐阅读
- python|python 推理引擎_【Rust日报】 2019-05-12(Snip开源神经网络推理引擎Tract)
- java|【Rust日报】2022-03-21 Firefox 现在约 10% 的代码为 Rust
- python|【Rust日报】2022-03-22 fluent-uri(一个快速、简单和严格的URI解析器)
- c++|【Rust日报】2022-03-23 RustSBI软件发布v0.2.2版本
- java|【Rust日报】2022-01-28 Rust 编程,2022 年的展望
- java|【Rust日报】2021-12-19 Foundry(以太坊应用程序开发工具包)
- 嵌入式|【Rust 日报】2021-11-21 The RustFest Global - Rust in Arts
- 嵌入式|【Rust日报】2021-11-14 一个开源的基于Rust和Flutter的Notion替代产品
- OpenCV实战|OpenCV 图像分割--Kmean聚类