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库学习案例的更多相关文章

  1. python requests库学习笔记(上)

    尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...

  2. python 之Requests库学习笔记

    1.    Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...

  3. python requests库学习笔记(下)

    1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions        #引入exc ...

  4. python3 requests库学习笔记(MOOC网)

    奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...

  5. python requests库学习

    Python 第三方 http 库-Requests 学习 安装 Requests 1.通过pip安装 $ pip install requests 2.或者,下载代码后安装: $ git clone ...

  6. Python Requests 库学习笔记

    概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...

  7. 【python 】Requests 库学习笔记

    概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...

  8. Python3中requests库学习01(常见请求示例)

    1.请求携带参数的方式1.带数据的post data=字典对象2.带header的post headers=字典对象3.带json的post json=json对象4.带参数的post params= ...

  9. python网络爬虫(三)requests库的13个控制访问参数及简单案例

    酱酱~小编又来啦~

随机推荐

  1. 没有rc.local的解决办法

    转载请注明来源https://www.cnblogs.com/sogeisetsu/p/11395098.html linux 开机自启动 我是小白,最近在想如何使用linux开机自启动,有一个办法是 ...

  2. linux lvm管理基础教程

    linux lvm管理基础教程 本人是在redhat7.x系统上亲测lvm管理功能,至于文中所受的CentOS 6 没有亲自试过. 本文来自:https://geekpeek.net/lvm-phys ...

  3. blockingqueue.h

    #include <mutex> #include <condition_variable> #include <deque> template <typen ...

  4. P1850 换教室[dp+期望]

    流下了不会概率的眼泪,由于不会概率,转移少写了点东西... 这个dp很简单,就是一个普通的线性dp加点期望.(刚开始写这道题时信笔写下) \(dp[0/1][i][j]\)表示到第\(i\)个时间段时 ...

  5. python面试题&练习题之函数

    1.写函数,接收两个数字参数,返回最大值例如:传入:10,20返回:20 def res_max(number1,number2): l1 = [] l1.append(number1) l1.app ...

  6. Codeforces 1038 D. Slime

    [传送门] 其实就是这些数字前面能加正负号,在满足正负号均出现的情况下价值最大.那么就可以无脑DP$f[i][j][k]$表示到了第$i$位,正号是否出现($j$.$k$为$0$或$1$)能得到的最大 ...

  7. EJS的个人总结

    什么是模板引擎? 用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档. ...

  8. 使用viper 进行golang 应用的配置管理

    viper 是一个强大的golang 配置管理包,支持多种配置格式内容的读取,同时支持读取key/value 存储的数据 而且不只是读取内容 ,同时也包含了,配置的写入操作. 以下是一个简单的demo ...

  9. CF 900D Unusual Sequences

    题目链接 \(Description\) 给定\(x,y\),求有多少个数列满足\(gcd(a_i)=x且\sum a_i=y\).答案对\(10^9+7\)取模. \(1≤x,y≤10^9\) \( ...

  10. 03-树3 Tree Traversals Again (25 分)

    An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example ...