requests库学习案例
requests库使用流程
使用流程/编码流程 1.指定url 2.基于requests模块发起请求 3.获取响应对象中的数据值 4.持久化存储
分析案例
需求:爬取搜狗首页的页面数据
# 爬取搜狗首页 import requests if __name__ == '__main__':
# step_1:指定url
sogou_url = 'https://www.sogou.com/'
# step_2: 发起请求:使用get方法发起get请求,该方法会返回一个响应对象。参数url表示请求对应的url
response = requests.get(url=sogou_url)
# step_3:获取响应数据:通过调用响应对象的text属性,返回响应对象中存储的字符串形式的响应数据(页面源码数据)
page_text = response.text
# step_4:持久化存储
with open('./sogou.html', 'w', encoding='utf-8') as fp:
fp.write(page_text)
print('爬取数据完毕!!!')
需求:爬取搜狗指定词条对应的搜索结果页面
# 爬取搜狗指定词条对应的搜索结果页面(简易网页采集器) # 反爬机制
#
# User-Agent:请求载体的身份标识,使用浏览器发起的请求,请求载体的身份标识为浏览器,
# 使用爬虫程序发起的请求,请求载体为爬虫程序。
#
# UA检测:相关的门户网站通过检测请求该网站的载体身份来辨别该请求是否为爬虫程序,
# 如果是,则网站数据请求失败。
# 因为正常用户对网站发起的请求的载体一定是基于某一款浏览器,
# 如果网站检测到某一请求载体身份标识不是基于浏览器的,则让其请求失败。
# 因此,UA检测是我们整个课程中遇到的第二种反爬机制,第一种是robots协议。
#
# UA伪装:通过修改/伪装爬虫请求的User-Agent来破解UA检测这种反爬机制
import requests
# 指定搜索关键字
word = input('enter a word you want to search:')
# 自定义请求头信息:UA伪装,将包含了User-Agent的字典作用到请求方法的headers参数中即可
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
# 指定url,原始url可能是https://www.sogou.com/web?query=qq,发现该url携带了参数
url = 'https://www.sogou.com/web'
# 封装get请求参数:如果请求携带了参数,则可以将参数封装到字典中结合这requests请求方法中的data/params参数进行url参数的处理
param = {
'query': word,
}
# 发起请求
response = requests.get(url=url, params=param, headers=headers)
# 获取响应数据
page_text = response.text
# 持久化存储
fileName = word + '.html'
with open(fileName, 'w', encoding='utf-8') as fp:
fp.write(page_text)
print('爬取数据完毕!!!', fileName)
需求:爬取豆瓣电影分类排行榜中的电影详情数据
# 抓取豆瓣电影分类排行榜 - 动作片
import requests
if __name__ == "__main__":
# 指定ajax-get请求的url(通过抓包进行获取)
url = 'https://movie.douban.com/j/chart/top_list?'
# 定制请求头信息,相关的头信息必须封装在字典结构中
headers = {
# 定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
# 定制get请求携带的参数(从抓包工具中获取)
param = {
'type': '',
'interval_id': '100:90',
'action': '',
'start': '',
'limit': ''
}
# 发起get请求,获取响应对象
response = requests.get(url=url, headers=headers, params=param)
# 获取响应内容
print(response.json())
爬取国家药品监督管理总局数据
#需求:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据http://125.35.6.84:81/xk/ import requests
import json
if __name__ == "__main__":
# 指定ajax-post请求的url(通过抓包进行获取)
# 首页中信息通过ajax获取
url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
# 定制请求头信息,相关的头信息必须封装在字典结构中
headers = {
# 定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
pageNum = 3
all_id_list = []
for page in range(3, 5):
data = {
'on': 'true',
'page': str(page),
'pageSize': '',
'productName': '',
'conditionType': '',
'applyname': '',
'applysn': ''
}
json_text = requests.post(url=url, data=data, headers=headers).json() # 详情页信息:url和域名一样 ,id不一样
# id值通过首页对应ajax请求得到的json串中获取
# 通过域名和id名拼接成新的url
for dict in json_text['list']:
id = dict['ID'] # 用于二级页面数据获取
# 下列详情信息可以在二级页面中获取
# name = dict['EPS_NAME']
# product = dict['PRODUCT_SN']
# man_name = dict['QF_MANAGER_NAME']
# d1 = dict['XC_DATE']
# d2 = dict['XK_DATE']
all_id_list.append(id)
# 该url是一个ajax的post请求
print(len(all_id_list))
post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
for id in all_id_list:
post_data = {
'id': id
}
response = requests.post(url=post_url, data=post_data, headers=headers)
if response.headers['Content-Type'] == 'application/json;charset=UTF-8':
# print(response.json())
# 进行json解析
json_text = response.json()
print(json_text['epsName']+','+ json_text['businessPerson'])
requests库学习案例的更多相关文章
- python requests库学习笔记(上)
尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...
- python 之Requests库学习笔记
1. Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...
- python requests库学习笔记(下)
1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions #引入exc ...
- python3 requests库学习笔记(MOOC网)
奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...
- python requests库学习
Python 第三方 http 库-Requests 学习 安装 Requests 1.通过pip安装 $ pip install requests 2.或者,下载代码后安装: $ git clone ...
- Python Requests 库学习笔记
概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...
- 【python 】Requests 库学习笔记
概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...
- Python3中requests库学习01(常见请求示例)
1.请求携带参数的方式1.带数据的post data=字典对象2.带header的post headers=字典对象3.带json的post json=json对象4.带参数的post params= ...
- python网络爬虫(三)requests库的13个控制访问参数及简单案例
酱酱~小编又来啦~
随机推荐
- C++学习(6)—— 引用
1. 引用的基本使用 作用:给变量起别名 语法:数据类型 &别名 = 原名 #include<iostream> using namespace std; int main(){ ...
- PyCharm专业版激活(2018年Windows版)
友情提示: 本教程仅供学习交流使用,如需商业用途,强烈建议使用官方正式版.(官网正式链接为:https://www.jetbrains.com/pycharm/) 当然网上有很多其他激活教程,我看到的 ...
- Pytorch autograd,backward详解
平常都是无脑使用backward,每次看到别人的代码里使用诸如autograd.grad这种方法的时候就有点抵触,今天花了点时间了解了一下原理,写下笔记以供以后参考.以下笔记基于Pytorch1.0 ...
- javascript---call,apply,bind
对于这三个函数,估计大家都还是很模糊,具体是用来干什么?简而言之,是用来对象冒充的. 首先这三个方法是每个函数都包含的非继承的的方法. 我来搬砖一下,此文引用 http://www.cnblogs.c ...
- ES6学习笔记--default,rest
default 意思是默认值.大家可以看下面的例子,调用animal()方法时忘记了传参数,传统的做法就是加上这一句type= type || 'cat' 来指定默认值. function anima ...
- 洛谷 P4158 [SCOI2009]粉刷匠 题解
每日一题 day59 打卡 Analysis 很容易看出是一个dp, dp[i][j[k][0/1]来表示到了(i,j)时,刷了k次,0表示这个没刷,1表示刷了. 于是有转移: 1.换行时一定要重新刷 ...
- Python错误 -- try/except/finally 、调用栈、记录错误、抛出错误
Bug:程序编写有问题造成的错误,称之为Bug. debug:调试 注意:bug是程序本身有问题.有缺陷.系统漏洞 异常:完全无法在程序运行中预测的错误,例如写入文件的时候,磁盘满了,写不进去了 ...
- 使用blessed-contrib 开发专业的终端dashboard
blessed-contrib 是blessed 的一个扩展包,以前有说过blessed(一个方便的开发cli 的工具) 我们使用blessed-contrib可以开发专业的终端dashboard 功 ...
- presto-gateway lyft 团队开源的prestodb 的负载均衡、代理、网关工具
presto-gateway 是 lyft 团队开源 的prestodb 的工具,很方便,我们可以用来方便的管理presto 多集群 通过yaml 进行配置管理,可以方便的管理不同的集群 lyft 参 ...
- 8.8poc包问题
对于8.8的包的问题:zabbix server设备重启后 zabbix server,mariadb,zabbix agent启动不了.是因为在7代的centos中在主机重启后.自动删除了/var/ ...