哈喽,大家好,我是小爬虫,上一节我们讲了Python基础语法的学习,不知道大家有没有学废呢。今天我们要学一个非常有用的网络请求的库,这个库在我们以后的爬虫中几乎是都会用到,这个库就是:requests
requests简介
在介绍requests之前,我们先简单讲一讲urilib。其实urilib是Python内置的网络请求框架,我们使用urilib来进行网络请求非常简单,只需要一句
resp = urlopen("http://www.baidu.com")
而requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库,其用法和urilib类似。
那么问题来了,既然Python已经内置了urllib,为什么还要使用requests呢?原因很简单,因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。而且requests可以将返回内容自动转换成你想要的数据格式,比如你想要提取文本就用text,但是如果你想要提取图片、文件等二进制文件,就要用content,如果想要json也可以转换成json格式。
requests使用
requests使用很简单,首先安装requests
pip install requests
导入requests就可以使用了
import requests
使用requests发送一个get请求
resp = requests.get("http://www.baidu.com")
使用requests发送一个post请求
data = {'name': 'Tom', 'age': '24'}
resp = requests.post("http://httpbin.org/post", data=data)
获取response中的文本
text = resp.text
获取response中的二进制数据
content = resp.content
获取response中的json
json_data = resp.json()
添加请求头
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)
怎么样,requests的使用是不是超级简单。那么接下来我们使用requests来实现我们的第一个案例。
爬取搜狗搜索页面
我们的需求是这样的,输入你想搜索的内容,输出搜狗搜索返回的网页源代码。我们首先找到搜狗搜索的网址,我们先在搜狗搜索页面随便搜一下,就能找到其地址:
那么这里的地址就是下面这样的,其中xxx就是我们要搜索的内容:
https://www.sogou.com/web?query=xxx
接下来我们要先输入我们想要搜索的内容,可以使用input来实现
query = input("请输入你想查询的内容:")
拿到query之后,拼接到上面链接中的xxx处,就是我们要请求的url
url = f"https://www.sogou.com/web?query={query}"
然后就是用requests去get请求了
resp = requests.get(url)
我们输入搜索的内容然后运行之后发现了这样的一个错误
这是为什么呢?其实这是因为搜狗网站监测到我们使用的是自动化程序去访问的这个网站,不是使用浏览器去访问的,所以直接给我们抛出这个错误了。要解决这个错误也很简单,那就是我们只需要将我们的程序伪装成浏览器去访问就好了。那么怎么伪装呢,其实就是上面讲到的给请求头添加一个User-Agent
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)
那么这个User-Agent的内容从哪里来的呢,我们可以打开我们刚刚搜索的周杰伦的页面,鼠标右键然后点击检查
这里我们会进入Chrome浏览器的调试界面,然后刷新网页,进入Network这个tab,这里面就是我们刷新这个页面之后所做的网络请求都罗列在这里,我们随便进入一个请求,找到Headers下面的Request Headers下面的User-Agent,这个就是我们当前浏览器的User-Agent
设置User-Agent之后再次运行程序,就可以正常请求到内容了。那么我们的第一个简单的爬虫就写完了,接下来把源码贴出来供大家参考
import requests
query = input("请输入你想查询的内容:")
url = f"https://www.sogou.com/web?query={query}"
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)
print(resp.text)
以上就是我们写的第一个爬虫程序,怎么样,是不是非常有趣,接下来我们还会有更有趣的内容,敬请期待。记得关注小爬哦~
本文首发于公众号:小爬虫,欢迎关注