爬虫01

爬虫(一)

就不跟大家扯别的了,我们直接来干货了。
我们先来介绍静态页面的爬虫。首先要会辨识静态页面和动态页面。

静态页面与动态页面

就我自己来说,我判断一个页面是静态页面还是动态页面的时候就是看这个页面是不是一次加载完的。
在这里插入图片描述

你们看这个网页的图片,图片的刷新是通过鼠标点击页底的页码来实现的,滚轮来回拖动时当前页面的图片不会进行刷新。所以对这种页面进行分析的时候就可以从标签中提取出图片的地址进行保存。
在这里插入图片描述
这张页面的图片是没有底部的页码的,图片的刷新是通过鼠标滚轮往下滑实时刷新的,这种图片就是通过刷新动态加载的,获取这种图片的地址就不能对标签进行分析了(我爬了好多次发现利用xpath解析出的是空列表,查资料发现是动态加载,不能对页面标签进行爬取。)

所以我们总结一下,大致可以说是:静态页面就是有底的页面,动态页面就是没有底的页面。我们接下来要讲的就是针对第一种静态页面的爬虫。

http与https

爬虫是基于网络的,网络是基于http和https协议的。我们直接来说一下爬虫要用到的http和https的有关内容吧
常用的请求头属性:
User-Agent:身份标识(可以利用浏览器的User-Agent来防止反扒机制)
Connection:请求完毕后是断开连接还是保持连接

常用响应头属性:
Content-Type:响应数据的数据类型
content-encoding: 编码方式

Requests模块

我们利用py提供的requestss模块模拟程序对服务器发起请求的过程,这个包py是不自带的,大家需要下载,我用的是pycharm,可以直接在pycharm里进行下载,具体方式可以看我之前写的博客,传送门在这里
我是传送门
请求的方式分为post和get两种,因此requests库就有对应的两种方法requests.get(url,params,(headers))和requests.post(url,params,(headers))两种方法发送请求。常用的参数有三个,url是需要请求的地址,params是请求时携带的参数,headers是头信息,这个参数是可选的,不过现在的反扒技术比较高级所以一般写爬虫时都加上这个参数。(可以用于防止网页反爬。)

那么如何才能知道请求是post还是get呢?
其实一般情况下的请求都是get请求,但是我们需要严谨一点的话就可以利用网页自带的抓包工具抓取信息。在当前网页右键,在出现的菜单点击检查就可进入抓包工具中

抓包工具的使用

在这里插入图片描述
或者使用快捷键Fn+F12也可以进入抓包工具。
在这里插入图片描述
如图,选中了左边的时间这一栏,这一栏在代码中的对应部分已经被标注了出来。
在这里插入图片描述
我们在第一栏选择网络进行抓包分析,点击进入网络后刚开始是没有数据包的,我们只需要刷新一下页面就可以看到数据包了,下图是刷新后的数据包可以被看到,任意点开一个数据包,我点击的是黄色箭头指示的那一个
在这里插入图片描述

在这里插入图片描述
到这里我们就已经可以分析出请求的具体类型了。所以现在我们拥有了请求类型,拥有了url,那么最后一个参数headers在哪里呢?
我们可以通过分析数据包获取浏览器的headers中的User-Agent。
在这里插入图片描述
到现在为止我们下载好了requests库,也有了想要爬取页面的url,请求类型以及headers,现在就可以开始爬取啦!

爬取代码

代码如下:

#引入requests库
import requests
#想要爬取页面的url
url='https://fabiaoqing.com/biaoqing'
#数据包中的User-Agent
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77'
}
#利用requests的get方法发送请求,会返回一个响应对象response
response=requests.get(url=url,headers=headers)
#使用响应对象response的content属性获取响应对象的值
page_content=response.content
#创建一个文件,其中./表示在当前路径的根路径开始
with open('./静态页面01.html','wb') as fp:
    #利用write方法将文件的内容写入到本地
    fp.write(page_content)
    #对文件的操作结束后关闭文件
    fp.close()
print("保存本地完毕!")

其中需要注意的是获取page-content响应对象的内容时需要根据数据包中响应对象的值来选择,response响应对象有content、text、json三种常用的属性和方法(我个人觉得content和text没有什么大的区别,不过我一般用的都是content),一般来说动态页面会出现json响应对象,我们目前的静态页面爬取还不需要json。
如下图我们在当前目录下爬取到的页面代码已经生成了
在这里插入图片描述
这是我们的页面内容
在这里插入图片描述
到这里我们就已经爬取到了页面的代码了,下面我们就可以对代码进行分析从而拿到我们想要的东西了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值