爬虫 requests 模块
2021/5/12 18:55:42
本文主要是介绍爬虫 requests 模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简单介绍requests 模块
Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作。
简单的使用例如:
# 爬取指定的网页 url = "https://philips-reporting.livecom.cn/admin/index.jsp" respones = requests.get(url) # 发送请求 respones.encoding = "UTF-8" #爬取内容编码防止乱码 page_text = respones.text with open("./live.html", "w", encoding="utf-8") as f: #持续性存储 f.write(page_text)
上面这段代码,将爬取下来的网页进行了保存。
那么我们 进行数据量级处理:
- 遇到对应的反爬机制,
- 反爬机制有:UA检测
应对: 反反爬策略:UA伪装
UA伪装:(1.定义一个字典 2.在字典中进行相关请求头的伪装 3.将伪装作用到get方法的headers参数中间即可) - UA检测被作用到大量的网站当中,因此在爬取时一定要加上UA操作
请求参数动态化:
最终实现请求参数动态化;
- 定义一个字典
- 字典中的键值对就是url 携带的参数
- 将字典作用到get 方法的params 方法中
来实现一个简单的需求;
爬取豆瓣电影的详情数据我们取电影名称,评分,以及电影地址:
分析可以得出:
1. 更多的数据请求是滚轮到达底部进行的ajax 请求。
2. 请求的url 进行捕获
3. url 的请求进行发送
url = "https://movie.douban.com/j/search_subjects" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'} param = { "type": "movie", "tag": "爱情", "sort": "recommend", "page_limit": 200, #取多少步 这里可以设置为可变 "page_start": 0, 从哪一部开始 } response = requests.get(url, params=param, headers=headers) move_list = response.json() #数据转换 print(move_list) dict = {} for i in move_list.values(): for j in i: print(f'{j["title"].replace(" ","")} {j["rate"]} 观看地址: {j["url"]}')
动态加载案例分析
概念:通过其他或另一个请求得到的数据
特性:非见非可见
判断相关数据是否是动态加载数据;
-基于抓包工具定位到浏览器地址栏url 对应的请求数据包,进行同步搜索,这组数据不是动态加载的可以直接爬取,没有搜取到这组数据是动态加载的,不介意直接爬取。
如何捕获动态加载数据
-基于抓包工具进行全局搜索,最终可以动态加载数据对应的数据包
实例:非动态加载
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'} params = { "cname": "上海", "pid": "", "keyword": "上海", "pageIndex": 1, "pageSize": 100, } url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword" response = requests.get(url,headers=headers,params=params) kfc_store_address = response.json() # print(kfc_store_address) for i in kfc_store_address["Table1"]: # for j in i.items(): print(f"店名:{i['storeName']} 地址: {i['provinceName']}{i['addressDetail']}") ------------------------------------------------------------------------------------------- import requests ids = [] headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'} url = "http://125.35.6.84:81/xk/itownel/portalAction.do?method=getXkzsList" for page in range(1,6): data={ 'on':'ture', 'page':str(page), 'pageSize':"15", 'praductName':'', 'conditionType':'1', 'applyname':'', 'applyan':'' } company_daya_json = requests.post(url=url,headers=headers,data=data).json() for dic in company_daya_json["list"]: _id=dic["ID"] ids.append(_id) detail_url = "http://125.35.6.84:81/xk/itownel/portalAction.do?method=getXkzsById" for _id in ids: data = { "id":_id } company_Json = requests.post(url=url,headers=headers,data=data).json() print(company_Json["epsName"],company_Json["epsProductAddress"])
这篇关于爬虫 requests 模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解