什么是requests模块

  requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。

因为在使用urllib模块的时候,会有诸多不便之处,总结如下:手动处理url编码手动处理post请求参数处理cookie和代理操作繁琐......使用requests模块:自动处理url编码自动处理post请求参数简化cookie和代理操作......

为什么要使用requests模块

如何使用requests模块

  • 安装:

    • pip install requests
  • 使用流程
    • 指定url
    • 基于requests模块发起请求
    • 获取响应对象中的数据值
    • 持久化存储

基于如下5点展开requests模块的练习

1.基于requests模块的get请求
2.基于requests模块的post请求
3.基于requests模块ajax的get请求
4.基于requests模块ajax的post请求
5.综合练习

案例演示代码演示:

1.基于requests模块的get请求,需求:

import requests#1.指定url
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = 'https://www.sogou.com/'
#2.发起请求:get返回一个响应对象
response = requests.get(url=url,verify=False,headers=headers)
#3.获取响应数据:text属性返回的是字符串形式的响应数据
page_text = response.text
print(page_text)
#4.持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:fp.write(page_text)print('over!!!')

需求:爬取搜狗首页的页面数据

import requests
wd = input('enter a word:')
#url携带的参数需要手动处理
url = 'https://www.sogou.com/web'#将参数手动处理成了字典的形式
param = {'query':wd
}
#使用params参数处理了请求携带的参数
response = requests.get(url=url,params=param)page_text = response.text
fileName = wd+'.html' #文件名#数据持久化
with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)print(fileName,'爬取成功!')

需求:爬取指定词条对应搜狗搜索结果页面

2.基于requests模块的post请求:

import requests
url = 'https://fanyi.baidu.com/sug'
wd = input('enter something of English:') #这里输入英文翻译成中文
#url携带参数的封装
data = {'kw':wd
}
#发起一个post请求
#UA检测这种反爬机制被应用在了大部分的网站中
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
response = requests.post(url=url,data=data,headers=headers)
#获取响应数据
#response.text #获取的是字符串形式的json数据
obj_json = response.json() #json()返回的就是对象类型的响应数据
print(obj_json)

需求:破解百度翻译

如果是Content-Type:application/json,可以obj_json = response.json() #json()返回的就是对象类型的响应数据

3.基于requests模块ajax的git请求:

prsponse这里的数据在世我们拿到的数据信息

在线JSON校验格式化工具:http://www.bejson.com/

#!/usr/bin/env python
# -*- coding:utf-8 -*-import requests
import urllib.request
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':'5','interval_id':'100:90','action':'','start':'0','limit':'20'}#发起get请求,获取响应对象response = requests.get(url=url,headers=headers,params=param)#获取响应内容:响应内容为json串print(response.text)movie_list = response.json()print(movie_list) #y以json格式拿取列表里嵌套着字典,每个字典是一电影的详情
all_names = []for dic in movie_list:print(dic)name = dic['title']all_names.append(name)print(all_names)需求:爬取豆瓣电影分类排行榜的电影名称

需求:爬取豆瓣电影分类的电影名称

 4.基于requests模块ajax的post请求:

ajax动态加载数据抓包查看方法

#!/usr/bin/env python
# -*- coding:utf-8 -*-import requests
import urllib.requestif __name__ == "__main__":#指定ajax-post请求的url(通过抓包进行获取)url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'#定制请求头信息,相关的头信息必须封装在字典结构中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',}#定制post请求携带的参数(从抓包工具中获取)data = {'cname':'','pid':'','keyword':'北京','pageIndex': '1','pageSize': '100'}#发起post请求,获取响应对象response = requests.post(url=url,headers=headers,data=data)#获取响应内容:响应内容为json串print(response.text)

需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据

5.综合练习:

这里引入一个fake_useragent第三方库,随机生成UserAgent请求头设置

安装  :pip3 install fake-useragent
查看安装的版本号:pip3 list 使用:
from fake_useragent import UserAgentua = UserAgent() # 禁用服务器缓存:ua = UserAgent(use_cache_server=False), 不缓存数据:ua = UserAgent(cache=False),忽略ssl验证:ua = UserAgent(verify_ssl=False)
print(ua.ie)   #随机打印ie浏览器任意版本
print(ua.firefox) #随机打印firefox浏览器任意版本
print(ua.chrome)  #随机打印chrome浏览器任意版本
print(ua.random)  #随机打印任意厂家的浏览器

需求:
爬取国家药品监督管理局企业许可相关信息:http://125.35.6.84:81/xk/问题描述:获取分页数据,根据不同企业,在二级页面获取许可相关信息知识点:
1.抓取数据包使用ajax的post请求
2.使用fake_useragent实现动态生成UA
3.该请求响应回来的数据有两个,可以根据content-type,来获取指定的响应数据:一个是基于text一个是基于json的4.json在线格式化效验工具:http://www.bejson.com/

1.抓取ajax数据包

post提交的分页请求数据

通过抓包工具获得首页li标签公司每条信息,从中提取二级页面跳转地址

获取二级页面信息:

Response才是我们程序获取的数据

import requests
from fake_useragent import UserAgentua = UserAgent(use_cache_server=False).random
headers = {'User-Agent':ua
}url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
for page in range(3,5):data = {'on': 'true','page': str(page),'pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':''}json_text = requests.post(url=url,data=data,headers=headers).json()all_id_list = []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请求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)#该请求响应回来的数据有两个,一个是基于text,一个是基于json的,所以可以根据content-type,来获取指定的响应数据if response.headers['Content-Type'] == 'application/json;charset=UTF-8':#print(response.json())#进行json解析json_text = response.json()print(json_text['businessPerson'],json_text['productSn'],type(json_text['productSn']))

代码展示

转载于:https://www.cnblogs.com/iamjianghao/p/10832609.html

python网络爬虫之requests模块相关推荐

  1. 06.Python网络爬虫之requests模块(2)

    今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 知识点回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 引入 ...

  2. python requests_Python爬虫之requests模块

    # requests模块 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 ...

  3. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  4. Python网络爬虫之requests库Scrapy爬虫比较

    requests库Scrapy爬虫比较 相同点: 都可以进行页面请求和爬取,Python爬虫的两个重要技术路线 两者可用性都好,文档丰富,入门简单. 两者都没有处理JS,提交表单,应对验证码等功能(可 ...

  5. python爬虫之requests模块2

    python网络爬虫之requests模块 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 一 获取验证码 步骤: ​ 1 注册云大码 http://www. ...

  6. python网络爬虫系列教程——python中requests库应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python中requests库的基础应用,网页数据挖掘的常用库之一.也就是说最主要的功能是从网页抓取数据. 使用前需要先联网安装reques ...

  7. python网络爬虫系列(四)——requests模块

    requests模块 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 ...

  8. Python 网络爬虫笔记1 -- Requests库

    Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...

  9. python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战

    上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...

最新文章

  1. saltstack 服务配置
  2. 28-Interview-面试
  3. 工作周报:2011-11-14至2011-11-18
  4. 十种排序算法的java汇总
  5. Java连续获取两个输入,java 获取控制台的输入的两个方法
  6. mysql迁移至postgresql_PostgreSQL来自欧罗巴Patroni系列技术主题一
  7. Android Stuido 快速设置成eclipse的快捷键习惯
  8. Python二维数组,坑苦了
  9. vs番茄助手的方便功能和便捷快捷键介绍
  10. 320240带中文字库液晶显示屏
  11. 八位全加器——python逻辑电路
  12. Kerberos异常之unnable to obtain password from user
  13. excel保存快捷键_Excel快升效率的快捷键
  14. opengl dfdx dfdy
  15. 我设计开发的第一个产品发布了,微信小程序“集美装修效果图“
  16. 【错误记录】Android 应用 POST 网络请求报错 ( java.io.IOException: Cleartext HTTP traffic to xxx not permitted )
  17. 未授权下载导致的信息泄露
  18. android 获取视频长度,android中如何获取视频时长
  19. 多可系统如何增加新用户到工作组
  20. 拔山盖世(BSGS)算法

热门文章

  1. COM编程入门---转发
  2. [导入]Eval格式化日期
  3. 使用备用访问映射改变站点访问路径
  4. Oracle学习(五)DBLINK
  5. 26-Ubuntu-文件和目录命令-其他命令-管道
  6. [TypeScript] Deeply mark all the properties of a type as read-only in TypeScript
  7. MIT线性代数:20.克拉默法则,逆矩阵和体积
  8. php 使用table方式导出excel文件
  9. 应该怎么做一个登录功能?
  10. struts2的select标签的用法