Request请求库
爬虫运行原理
首先回顾一下爬虫运作的基本原理(下面是比较正式的书面语):
爬虫是一种自动化程序,用于从互联网上获取信息,
- 发起请求:爬虫首先需要发起一个HTTP请求,向目标网站请求页面的内容。这个请求可以包含特定的参数、头部信息和身份验证等。
- 接收响应:目标网站接收到请求后,会返回一个HTTP响应。响应中包含了页面的内容和其他相关信息,比如状态码、头部信息等。
- 解析页面:爬虫接收到响应后,需要对页面进行解析,以提取所需的数据。常用的解析方法包括正则表达式、XPath、CSS选择器等。
- 提取数据:通过解析页面,爬虫可以提取出需要的数据。这些数据可以是文本、图片、链接等各种形式的信息。
- 存储数据:爬虫将提取到的数据存储到本地文件或数据库中,以备后续处理和分析使用。
- 处理下一页:在爬取单个页面的数据之后,爬虫可能需要处理下一页的数据。这通常涉及到翻页操作,可以通过模拟用户点击或修改URL参数等方式来获取下一页的内容。
- 重复操作:爬虫可以根据需要循环执行上述步骤,以获取更多的数据或不同页面的信息。
但是对于我们简单而言,就是我们看到的几乎都是图形化界面,但是爬虫可以返回页面对应的参数,这一部分是用代码进行表示,我们明面上看不到,比如状态码,页面携带的Cookie等等。爬虫模拟了我们用户去访问网页的这一过程。
Requests请求库
要访问网页,我们还需要相应的工具——Requests请求库。
Requests请求库是一个HTTP的请求库,我们可以通过这个Requests请求库对网站发起一个请求。
安装环境
在Pycharm里面进行库的安装,如果安装不成功,可以去找国内的镜像源,那样安装会比较顺利。
Requests库的使用
打开pycharm,新建文件,然后输入import requests,查看是否有报错:
接下来对Requests的简单语法进行一个了解:
在Python中,requests
是一个流行的第三方库,用于发送HTTP请求。它提供了简单且人性化的接口,使得发送HTTP请求变得非常容易。以下是requests
库的一些常见用法和语法:
- 发送GET请求:
import requests
response = requests.get(url)
其中,url
是你要发送请求的目标URL。requests.get()
方法会发送一个GET请求到指定的URL,并返回一个Response
对象。
- 发送带参数的GET请求:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.get(url, params=payload)
在上面的例子中,payload
是一个包含参数的字典。requests.get()
方法的params
参数允许你将这些参数添加到请求的URL中。
因为GET请求的内容在链接中都看得到,举个例子,这里的payload指的就是:
- 发送POST请求:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post(url, data=payload)
在这个例子中,payload
是一个包含要发送的数据的字典。requests.post()
方法将发送一个POST请求到指定的URL,并将payload
作为请求的数据。这里与GET请求不同,这些参数在明面的链接中是看不到的。
- 处理响应:
import requests
response = requests.get(url)
print(response.status_code) # 打印状态码
print(response.text) # 打印响应内容
response.status_code
是响应的状态码,用于判断请求是否成功。response.text
是响应的内容,可以使用它来获取服务器返回的数据。
状态码
以百度为例:
这里是要访问的URL。
这里使用print(response.status_code)与print(response)结果一致。
查看返回结果:
返回码200,代表我们可以正常进行访问。
网页内容
接下来再对网页的内容进行获取,还是以百度为例:
这里使用response.text进行输出,可以看到页面的内容都输出出来了,但是还有部分是乱码的状态。从代码可以发现,网页的原始编码是使用的utf-8,所以我们保持与网页原始编码一致,也改成utf-8。
这个时候页面的内容就可以正常进行显示了。