首页 / 爬虫 / 爬虫 requests 模块
爬虫 requests 模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了爬虫 requests 模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3393字,纯文字阅读大概需要5分钟。
内容图文
简单介绍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 模块全部内容,希望文章能够帮你解决爬虫 requests 模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。