爬虫的基本原理

我们从今天开始来学习爬虫这个神奇的东西,我们先来认识下爬虫
一、什么是爬虫
1、爬虫其实就是网络爬虫,可以理解为网络上爬行的一只蜘蛛。就是请求网站并提取数据的自动化程序
2、获取到的网页资源实际是html代码,这里面包括标签和文字
3、右键->审查元素->Elements选项卡(显示网页的源代码)
4、看到的网页就是由源代码解析出来的网页,超链接在网页中看不到,需要经过解析
二、爬虫的基本流程
1、向服务器发起请求
通过http库向目标站点发起请求,即发送一个Request,请求可以包含额外的header等信息,等待服务器响应
2、获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
3、解析内容
得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。
可能是Json,可以直接转化为Json对象解析,
可能是二进制数据,可以做保存或者进一步处理
4、保存数据
保存形式多样,可以保存为文本,也可以保存至数据库,或者保存成特定格式的文件。
三、什么是Request和Response
1、Request
就是我给服务器发送了一个请求,告诉服务器要干嘛,请求哪些信息,
2、Response
经过解析之后给我返回的相应就是Response,里面的内容包含了html代码,浏览器解析代码然后就可以呈现网页了
3、Network选项卡下面有列表数据,刷新网页的过程中选项卡下面有很多列表形式的连接,实际上就是浏览器与服务器进行通信的时候,浏览器向服务器发送的请求和服务器的相应,每一条都是一个请求响应,
4、请求介绍
Request Headers请求头
Response Headers 响应头
General 请求的基本描述
Preview 网页源代码位置
5、请求步骤:
(1)浏览器发送消息给该网址所在的服务器,这个过程叫做HTTP Request
(2)服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器,这个过程叫做HTTP Response
6、Request中包含什么
(1)请求方式:主要有GET,POST两种类型,另外还有HEAD,PUT,DELETE,OPTIONS等(Network选项卡下请求数据中Headers下的Request Method中包含请求方式字段)
①Get的请求特点,所要请求的参数都包含在网址里面
②POST的请求特点:FormData中包含请求参数
③POST与Get的区别:Post比Get多了一个FormData
(2)请求URL:URL全称统一资源定位符,如一个网页文档,一张图片,一个视频等都可以用一个URL唯一来确定。
(3)请求头:包含请求时的头部信息,如User-Agent,Host,Cookies等(当做请求的配置信息)
①Cookies是用来保持登陆会话的
②User-Agent是用来识别哪个浏览器,才会给你发送响应;不携带User-Agent会被识别为非法请求,不会返回数据
(4)请求体:请求时额外携带的数据,如表单提交的表单数据;get请求方式时候不会携带任何内容
①Formdata是建值对的形式
(5)
7、Response中包含什么?
(1)响应状态:有多种响应状态,如200代表成功,301代表跳转,404找不到页面,502服务器错误
①Set-cookies是响应头非常重要的信息,可能会有多个,会告诉浏览器把cookies保存下来,就会保持登陆状态
(2)响应头:如内容类型,内容长度,服务器信息,设置cookies等等,
(3)响应体:最主要的部分,包含了请求资源的内容,如网页HTML,图片二进制数据等
8、能抓取怎样的数据?
(1)网页文本:如HTML文档,Json格式文本等
(2)图片:获取到的是二进制数据,保存为图片格式
(3)视频:同为二进制数据,保存为视频格式即可
(4)其他:只要是能请求到的,都能获取
9、
四、怎样解析
1、解析方式
(1)直接处理:一般用于网页返回的内容比较简单,本身的构造也比较简单
(2)Json解析:字符串转换为json对象,在进行解析提取有效的数据
①HXR选项卡中就是AJAX的请求,直接解析字符串
(3)正则表达式:规则表达式,把HTML网页中相应的文本提取出来(应用比较普遍)
(4)BeautifulSoup:解析库解析,更加好用,提取更加容易
(5)Pyquery:
(6)XPath
2、为什么我抓到的和浏览器看到的不一样?
(1)Js调用链接获取数据然后加载到网页
3、怎样解决JavaScript渲染的问题
(1)分析Ajax的请求,:返回结果为json字符串
(2)Selenium/webdriver驱动或者模拟一个浏览器来加载网页,用来做自动化测试的工具,像浏览器一样来加载一个网页
(3)Splash:模拟js渲染的
4、保存数据
(1)文本:纯文本,Json,Xml
(2)关系型数据库:如MySQL,oracle,sqlserver等具有结构化表结构形式存储,
(3)非关系型数据库:如MongoDB,Redis等key-value形式存储
(4)二进制文件:如图片,视频,音频等直接保存成特定格式即可。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值