第一关:初识爬虫 - 0入门到进阶(附练习题) | Python爬虫

Python爬虫 - 专栏链接

手把手教你如何入门,如何进阶。

目录

1.  初识爬虫

2.  爬虫四部曲

3.  爬虫初体验

4.  requests.get()方法

5.  Response 对象的常用属性(代码简写res变量名)

5.1  res.status_code(响应的 HTTP 状态码)

5.2  res.text(响应内容的字符串形式)

5.3  res.encoding(响应内容的编码)

5.4  res.content(响应内容的二进制形式)

练习题

联系我们,一起学Python吧


1.  初识爬虫

到底什么是爬虫呢?

爬虫,从本质上来说,就是利用一定的规则的程序在网上拿到对我们有价值的数据。

随着机器学习、人工智能技术的发展,数据越来越重要,需要的数据量也越来越大。而我们可以通过爬虫获取海量的数据,所以爬虫是这一切的源头。

在学完爬虫课之后,你可以自己动手写个爬虫,比如:分析北京各地区的房租情况、自动抢火车票、自动抢演唱会门票、一键下载图片、下载音乐助手、采集疫情数据等等。

2.  爬虫四部曲

第1步:获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。

第2步:解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。

第3步:提取数据。爬虫程序再从中提取出我们需要的数据。

第4步:储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。

这就是爬虫的工作原理,无论之后的学习内容怎样变化,其核心都是爬虫原理。

3.  爬虫初体验

学习爬虫接触到的第一个模块是:requests。安装方法是:Windows 电脑里叫命令提示符(cmd),输入 pip install requests 即可;在 Mac 电脑里打开终端软件(terminal),输入pip3 install requests,然后点击enter即可。

这里是 Windows 的安装截图,提示 Successfully 表示安装成功了。

requests 库可以帮我们下载网页源代码、文本、图片,甚至是音频。其实,“下载” 本质上是向服务器发送请求并得到响应。

 

4. requests.get()方法

import requests 
res = requests.get('http://www.baidu.com') 
print(type(res))
# 打印变量res的数据类型
# <class 'requests.models.Response'>

打印结果这代表着:res是一个对象,属于 requests.models.Response 类。好,既然已经知道res是一个Response对象了,我们也就可以去了解它的相应属性和方法了。

5.  Response 对象的常用属性(代码简写res变量名)

5.1  res.status_code(响应的 HTTP 状态码)

import requests 
res = requests.get('http://www.baidu.com') 
print(res.status_code)
# 200

这里的 200 就是响应的状态码,表示请求成功。当请求失败时会有不同的状态码,不同的状态码有不同的含义,常见的状态码如下:

1.1   1xx(消息,例如:100,继续发出请求)

1.2   2xx(请求成功,例如:200,请求成功)

1.3   3xx(重定向,例如:301,永久重定向)

1.4   4xx(客户端错误,例如:404,找不到资源)

1.5   5xx(服务器错误,例如:503,服务器不可用)

这些状态码只需了解即可,不必全都记住,遇到问题时我们再去查询。

5.2  res.text(响应内容的字符串形式)

这个属性可以把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。

import requests 
res = requests.get('http://www.baidu.com') 
print(res.text)

可以看到获取到了百度的网页源代码,但是中文乱码了,这需要设置一下 Response 对象的编码,看下一节知识点。

5.3  res.encoding(响应内容的编码)

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

import requests
res = requests.get('http://www.baidu.com')
res.encoding = 'utf-8'      # 设置res对象的编码
print(res.text)

可以看到我们设置了res对象的编码格式为:utf-8,就解决乱码问题了。那么怎么查看数据编码类型呢?

1. 鼠标右键页面。2. 查看网页源代码。3. 源代码最上面的 meta 标签内的 content="text/html;charset=utf-8"。

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
#  百度源代码中的meta标签

5.4  res.content(响应内容的二进制形式)

用于图片、音频、视频等二进制内容的获取、下载。

res.text 用于文本内容的获取、下载。

# 引入requests库
import requests

# 发出请求,并把返回的结果放在变量res中
res = requests.get('https://www.baidu.com/img/bd_logo1.png?where=super')
# 把Reponse对象的内容以二进制数据的形式返回
pic = res.content
# 新建了一个文件baidu.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。
# 图片内容需要以二进制wb读写。这个知识点属于基础语法的。
photo = open('baidu.jpg','wb')
# 获取pic的二进制内容
photo.write(pic) 
# 关闭文件
photo.close()

百度logo这张图片就下载下来咯。

练习题

同学们,先自觉练习,答案在公众号,公众号回复暗号【答案】即可。

1. requests 获取数据的方法是?

A.requests.fetch()
B.requests.http()
C.requests.html()
D.requests.get()

2. 下载视频用到response对象的哪个方法?

A. response.text
B. response.encoding
C. response.content
D. response.status_code

3. 当状态码为多少时,表示请求成功?

A. 100
B. 200
C. 301
D. 403

4. 页面编码类型为 utf-8,如果采集的数据乱码,通常该怎么办?

A. 改变页面编码类型为 gb2312
B. 设置res.encoding = 'utf-8'
C. 设置res.encoding = 'gb2312'

5. 采集网址:http://www.pyfamily.cn/data/test/  打印数据查看结果。

知识点:res.text 内容以字符串的形式返回。

联系我们,一起学Python吧

每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。


​微信群(关注「Python家庭」一起轻松学Python吧)

​QQ 群(983031854

发布了16 篇原创文章 · 获赞 95 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34409973/article/details/104799359