Python爬虫的基本原理和requests的基本使用——爬虫入门

目录

1、爬虫的基本概念

2、爬虫的工作原理

爬虫的三个步骤:

浏览器的工作原理:

3、爬虫组常用的库——requests

4、requests库的基础应用

①requests.get()方法

②Response对象常用属性

res.status_code

res.text

res.content

res.coding

1、爬虫的基本概念

        网络爬虫,简称爬虫,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。爬虫做的事情和蜘蛛类似,所以网络爬虫也被成为网络蜘蛛(spider)。

2、爬虫的工作原理

        爬虫像浏览器一样向服务器发送请求,拿到服务器返回的数据后,根据我们自己设定的规则去获取需要的数据,数据处理完成后再将数据保存起来。

        简单地说,爬虫就是模拟浏览器的行为,从而获取网站的数据。

爬虫的三个步骤:

①:获取数据,爬虫会根据我们提供的网址,向服务器发送请求获取数据;

②:处理数据,对获取的数据进行处理,得到我们需要的部分;

③:存储数据,将处理后的数据保存起来,便于后续的使用和分析等。

爬虫的工作原理中提到了像浏览器一样工作,我们来简单看一下浏览器的工作原理

浏览器的工作原理:

        首先,在浏览器输入网址(URL);然后,浏览器去访问该网址对应的服务器,这个过程叫做请求(request)。接着,服务器将网站内容发送给浏览器,这个过程叫响应(response)。

        浏览器拿到服务器返回的内容后,一般都是网页的源代码。还需要将浏览器内容解析成我们能够看懂的样子,也就是我们最终在浏览器里看到的网页。

Python爬虫的基本原理和requests的基本使用——爬虫入门_第1张图片 Python爬虫的基本原理和requests的基本使用——爬虫入门_第2张图片

                            源代码——————————解析—————————>网页

3、爬虫组常用的库——requests

        requests是爬虫最常用的第三方库,想了解更多就查看requests的中文文档吧:requests中文文档链接

4、requests库的基础应用

 ①requests.get()方法

        requests.get()方法用来获取数据,直接上例子(以我的博客主页为例)

#导入第三方库requests
import requests

#对博客网站发送请求,将 返回值 赋值给re
re = requests.get('https://blog.csdn.net/m0_52162042?type=blog&spm=1011.2124.3001.5348')
#打印re的值
print(re)

运行结果:

         我们使用requests.get('网站地址')方法向对应的网站发送了请求,然后将返回的结果存到了变量res中,供后续使用。res的类型是Response对象,后面的 200 是状态码,用来,判断是否请求成功。状态码为200时,表示请求成功,当请求失败时会有不同的状态码。不同的状态码有不同的含义,常见状态码如下:

常见状态码
响应状态码 含义 例子 含义
1XX 消息 100 继续发送请求

2XX

请求成功 200 请求成功
3XX 重定向 301 永久重定向
4XX 客户端错误 404 找不到资源
5XX 服务端错误 503 服务不可用

②Response对象常用属性

Response对象常用属性
属性 含义
res.status_code 响应的 HTTP 状态码
res.text 响应内容的字符串形式
res.content 响应内容的二进制形式
res.encoding 响应内容的编码

 那就废话少说直接举例

res.status_code

#导入第三方库requests
import requests

#对博客网站发送请求,将 返回值 赋值给re
re = requests.get('https://blog.csdn.net/m0_52162042?type=blog&spm=1011.2124.3001.5348')
#判断对博客是否请求成功
if re.status_code==200:
    print('博客请求成功')
else:
    print('博客请求失败')

 运行结果:

 res.text

        res.text 返回的时服务器响应内容的字符串形式,也就是文本内容。经过测试,如果直接打印返回值为空,CSDN博客有反爬虫机制,所以增加了请求头,这里暂时不做解释。

#导入第三方库requests
import requests

#由于CSDN博客有反爬虫机制,所以加了请求头
headers={
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'
}

#对博客网站发送请求,将 返回值 赋值给re
re = requests.get('https://blog.csdn.net/m0_52162042?type=blog&spm=1011.2124.3001.5348',headers=headers)
#输出返回内容的 字符串格式
print(re.text)

 运行结果:

res.content

        除了文本内容的下载,爬虫还能下载图片、音频、视频等。经过网页的分析,可以获得”小狼宝宝博客“头像的地址为:https://profile.csdnimg.cn/4/0/3/1_m0_52162042

#导入第三方库requests
import requests

#由于CSDN有反爬虫机制,所以加了请求头
headers={
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'
}

#对博客网站发送请求,将 返回值 赋值给re
re = requests.get('https://profile.csdnimg.cn/4/0/3/1_m0_52162042',headers=headers)
#以二进制写入的方式,打开一个名为“小浪宝宝头像.jpg”的文件
with open('小浪宝宝头像.jpg','wb') as file:
    #将数据的二进制形式写入文件
    file.write(re.content)

运行结果:

 Python爬虫的基本原理和requests的基本使用——爬虫入门_第3张图片程序的同目录下,获取到了我博客的头像。

        res.text 和 res.content 的区别是:res.text 用于文本内容的获取、下载,res.content 用于图片、音频、视频等二进制的获取、下载。

 res.coding

         编码是信息从一种形式格式转换成另一种形式的过程。常见的编码方式有ASCII、GBK、UTF-8 等。如果用和文件编码方式不同的方式去解码,我们会得到一些乱码。

        res.encoding 是爬虫获取数据的编码格式,requests 库会根据内容推测编码格式是什么,然后将 res.coding 设成推测的格式,在访问 res.text 时 使用该格式解码。当推测的编码格式错误时,即出现乱码时,就需要我们手动给定 res.encoding 赋值。话不多说,还是从实践中找寻真理!

#导入第三方库requests
import requests

#对百度网站发送请求,将 返回值 赋值给re
re = requests.get('https://www.baidu.com')

#打印出返回内容的 字符串格式
print(re.text)

运行结果:

        用print(res.encoding)命令打印编码格式为:ISO-8859-1 ,而国内网站的编码格式一般是UTF-8GBKGB2312

        上述代码中网站的正确编码格式其实是 UTF-8 ,我门手动将编码格式改成 UTF-8 ,便能显示正确的内容了。

#导入第三方库requests
import requests

#对百度网站发送请求,将 返回值 赋值给re
re = requests.get('https://www.baidu.com')

#手动将编码格式改为 'UTF-8',并不区分大小写,'utf-8'也可以 
re.encoding='UTF-8'

#打印出返回内容的 字符串格式
print(re.text)

运行结果:

         好了,今天的分享就到这里了,如果我的内容能帮到你,点个赞呗

        如果你对今天的分享有疑问,欢迎留言。

你可能感兴趣的:(Python爬虫,python,编程语言,list,pycharm,经验分享)