爬虫原理篇流程方法概述

版权声明:一起学习啊 https://blog.csdn.net/q1694222672/article/details/82657680

原理篇


一、爬虫的流程

1.发起请求,通过HTTP库向目标站点发起请求,及发送一个request,可以包含headers等信息

2.获取响应内容,如果正常响应,会得到一个response,其内容便是我们要获取的内容页面,可能有HTML,json,图片视频等格式内容

3.解析内容,若得到HTML,则使用正则,bs4等进行解析,若是json,直接转换为json对象解析,若是二进制数据,可以保存下来

4.保存数据,可以保存为文本,至数据库,或特定文件


二、Request

1.请求方式:

  • get:请求的所有参数都包含在网址里面

  • post:放在request中的form data里,也可以使用Ajax请求数据

  • 其他方式不常用

2.请求的URL

  • 统一资源定位符,一个网页文档,一张图片,一个视频等都可以用URL来唯一确定

3.浏览器请求头request headers

  • 包含User-Agent,Host,Cookies等信息

4.请求体

  • 请求体是额外携带的数据,如表单提交时的表单数据

三、Response

1.响应状态,如200成功,301跳转,404找不到,502服务器错误

2.响应头,内容类型,长度,服务器信息,设置Cookie等

3.响应体,最主要的部分,包含了请求资源的内容,如HTML,图片,二进制数据等


四、能抓怎样的数据

1.网页文本,如HTML文档,json格式的文本

2.图片,视频,二进制格式

3.其他,只要是能请求到的,都能获取


五、解析方式

1.直接处理,返回简单的字符串

2.json格式解析

3.正则表达式

4.BeautifulSoup库解析,常用

5.PyQuery

6.XPath


六、为什么抓到的数据和浏览器看到的不一样(JavaScript渲染问题)

1.分析Ajax请求,如果是简单的,则能通过XHR选项卡直接找到请求的返回结果,通过解析json获得

2.若是JS加密解密渲染的,则需要使用Selenium等库调用浏览器驱动真实模拟访问,得到的也是渲染之后的结果,对此结果进行抓取

3.Splash库,也是解决JS渲染的

4.PyV8,Ghost.py等


七、保存数据的方式

1.纯文本,json等

2.关系型数据库,Mysql,Oracle

3.非关系型数据库,MongoDB,Redis等Key-Value形式

4.二进制文件,图片,视频,音频等直接保存成特定格式

猜你喜欢

转载自blog.csdn.net/q1694222672/article/details/82657680