python 中的网络请求模块
- urllib 古老不好用
- requests 学习重点
request模块
基于网络的请求的模块,功能强大,简单高效
作用:模拟浏览器发请求
如何使用:(requests模块编码流程)
- 指定url
- 发起请求
- 获取相应数据
- 持久化存储
实战:
01.requests第一血
import requestsif __name__ == '__main__':# 指定urlurl = 'https://www.sogou.com/'# 访问网页response = requests.get(url=url)# 获取数据page_text = response.textprint(page_text)# 持久化数据with open('baidu.html', 'w', encoding='utf-8') as fp:fp.write(page_text)
02.requests实战之网页采集器
import requestsif __name__ == '__main__':# UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52'}# 指定urlurl = "https://www.sogou.com/web"kw = input("请输入关键词:")# 请求参数param = {'query': kw}# 发送get请求response = requests.get(url=url, params=param, headers=headers)page_text = response.textfileName = kw + '.html'# 写入文件with open(fileName, 'w', encoding='utf-8') as file:file.write(page_text)print(fileName, '写入成功')
需求:
每个网站都有用户身份UA的检测,如果我们没有设置UA身份的话会被检测出来我们是爬虫,就无法去获取资源所以我们就需要进行UA身份伪装
User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52
网站都有UA检测所以我们要使用UA伪装
03.requests实战之破解百度翻译
import requestsimport json# https://fanyi.baidu.com/sugif __name__ == '__main__':# 1.指定urlpost_url = 'https://fanyi.baidu.com/sug'# 2.UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52'}# 3.设置请求参数word = input('请输入英文字母')data = {'kw': word}# 4.发送请求response = requests.post(url=post_url, headers=headers, data=data)# 5.获取相应数据,如果确定是json类型的才能使用json()方法dic_obj = response.json()# 6.持久化处理fileName = word + '.json'# 写法1fp = open(fileName, 'w', encoding='utf-8')json.dump(dic_obj, fp=fp, ensure_ascii=False)print("over!!!!")# 写法2with open(fileName, 'w', encoding='utf-8') as fp:json.dump(dic_obj, fp=fp, ensure_ascii=False)print("over!!!!")
chrom 自带抓包工具
XHR表示Ajax请求

通过数据包的分析发现sug 是对后段的Ajax的请求
点开preview发现请求回的数据,是一组json数据
发现百度翻译的接口
需求:
- 使用post请求
- 返回的数据是一个json数据
04.requests实战之豆瓣电影爬取
分析:
- 我们打开页面发现页面数据局部刷新并且地址栏没有发生改变,
- 得出此页面使用的是懒加载,那一定就是使用了Ajax请求
- 通过抓包工具发现了此页面的接口

获取url地址为:
https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=playable&start=1&limit=250
python代码
import requestsimport jsonif __name__ == '__main__':# 1.确定urlurl = 'https://movie.douban.com/j/chart/top_list'# 2.UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52 '}# 3.请求参数 &interval_id=100%3A90&action=playable&start=1&limit=250params = {'type': '11','interval_id': '100:90','action': 'playable','start': '1','limit': '250',}# 4.发送get请求response = requests.get(url=url, headers=headers, params=params)dic_obj = response.json()print(dic_obj)# 文件持久化with open('豆瓣电影.json', 'w', encoding='utf-8') as fp:json.dump(dic_obj, fp=fp, ensure_ascii=False)
05.requests实战之肯德基餐厅位置爬取
爬取流程类似于豆瓣
肯德基官方网站 - Welcome to KFC.com.cn
轻松获得接口
