requests模块入门

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests模块入门相关的知识,希望对你有一定的参考价值。

requests安装

在前⾯⼩节中, 我们使⽤urllib来抓取⻚⾯源代码. 这个是python内置的⼀个模块. 但是, 它并不是我们常⽤的爬⾍⼯具. 常⽤的抓取⻚⾯的模块通常使⽤⼀个第三⽅模块requests. 这个模块的优势就是⽐urllib还要简单, 并且处理各种请求都⽐较⽅便.

既然是第三⽅模块, 那就需要我们对该模块进⾏安装, 安装⽅法:

pip install requests

如果安装速度慢的话可以改⽤国内的源进⾏下载安装.

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

在这里插入图片描述
OK. 接下来我们来看看requests能带给我们什么?

先拿sogou搜索开刀试试

# 案例1. 抓取搜狗搜索内容
kw = input("请输⼊你要搜索的内容:")
response = requests.get(f"https://www.sogou.com/web?query={kw}") # 发送get请求
# print(response.text) # 直接拿结果(⽂本)
with open("sogou.html", mode="w", encoding="utf-8") as f:
	f.write(response.text)

接下来, 我们看⼀个稍微复杂那么⼀丢丢的, 百度翻译~

百度翻译

注意百度翻译这个url不好弄出来. 记住, 在输⼊的时候, 关掉各种输⼊法,要⽤英⽂输⼊法, 然后不要回⻋. 就能看到这个sug了

在这里插入图片描述

# 案例2.抓取百度翻译数据
# 准备参数
kw = input("请输⼊你要翻译的英语单词:")
dic = {
 "kw": kw # 这⾥要和抓包⼯具⾥的参数⼀致. 
}
# 请注意百度翻译的sug这个url. 它是通过post⽅式进⾏提交的. 所以我们也要模拟post请求
resp = requests.post("https://fanyi.baidu.com/sug",data=dic)
# 返回值是json 那就可以直接解析成json
resp_json = resp.json()
# {'errno': 0, 'data': [{'k': 'Apple', 'v': 'n.苹果公司,原称苹果电脑公司'....
print(resp_json['data'][0]['v']) # 拿到返回字典中的内容

在这里插入图片描述
是不是很顺⼿呢? 还有⼀些⽹站在进⾏请求的时候会校验你的客户端设备型号. ⽐如, 我们抓取⾖瓣电影

抓取豆瓣电影

# 案例3: 抓取⾖瓣电影
url = 'https://movie.douban.com/j/chart/top_list'
param = {
 'type': '24',
 'interval_id': '100:90',
 'action':''
,
 'start': '0',#从库中的第⼏部电影去取
 'limit': '20',#⼀次取出的个数
}
headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; IntelMac OS X10_12_0) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/72.0.3626.121 Safari/537.36'
}
response = requests.get(url=url,params=param,headers=headers
)
list_data = response.json()

fp = open('./douban.json','w',encoding='utf-8')

json.dump(list_data,fp=fp,ensure_ascii=False)
print('over!!!')

总结:

  1. 爬⾍就是写程序去模拟浏览器⽤来抓取互联⽹上的内容
  2. python中⾃带了⼀个urllib提供给我们进⾏简易爬⾍的编写
  3. requests模块的简单使⽤, 包括get, post两种⽅式的请求. 以及User-Agent的介绍.

加油!

感谢!

努力!

以上是关于requests模块入门的主要内容,如果未能解决你的问题,请参考以下文章

入门学Python一定要知道的requests模块安装及使用

nodejs入门教程之http的get和request简介及应用

requests模块的入门使用

Requests模块简单入门

Atom编辑器入门到精通 Atom使用进阶

Motan在服务provider端用于处理request的线程池