[2021.7]猿人学 | 爬虫攻防大赛 | 第二题

类的加载原理分析(上)

  返回  

requests模块入门

2021/7/21 15:08:03 浏览:

requests模块入门

  • requests安装
  • 先拿sogou搜索开刀试试
  • 百度翻译
  • 抓取豆瓣电影

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的介绍.

加油!

感谢!

努力!

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号