什么是requests模块
官方文档:https://requests.readthedocs.io/en/master/

  • requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
  • 为什么要使用requests模块
    因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
  • 手动处理url编码
  • 手动处理post请求参数
  • 处理cookie和代理操作繁琐

  • 使用requests模块:
  • 自动处理url编码
  • 自动处理post请求参数
  • 简化cookie和代理操作

    如何使用requests模块
    安装:
pip install requests

使用流程

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

response的常用属性

  • response.text 响应体 str类型
  • respones.content 响应体 bytes类型
  • response.status_code 响应状态码
  • response.request.headers 响应对应的请求头
  • response.headers 响应头
  • response.request.cookies 响应对应请求的cookie
  • response.cookies 响应的cookie(经过了set-cookie动作)
    Requests库中有7个主要的函数
    分别是 request() 、get() 、 head() 、post() 、put() 、patch() 、delete() 。这七个函数中request()函数是其余六个函数的基础函数,其余六个函数的实现都是通过调用该函数实现的。

方法 说明

  • requests.request() 构造一个请求,支撑一下方法的基础方法
  • requests.get() 获取HTML网页的主要方法,对应于HTTP的GET(请求URL位置的资源)
  • requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD(请求URL位置的资源的头部信息)
  • requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST(请求向URL位置的资源附加新的数据)
  • requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT(请求向URL位置储存一个资源,覆盖原来URL位置的资源)
  • requests.patch() 向HTML网页提交局部修改的请求,对应于HTTP的PATCH(请求局部更新URL位置的资源)
  • requests.delete() 向HTML网页提交删除请求,对应于HTTP的DELETE(请求删除URL位置储存的资源)
    而这几个函数中,最常用的又是 requests.get() 函数。get函数有很多的参数,我只举几个比较常用的参数

参数 说明

  • url 就是网站的url
  • params 将字典或字节序列,作为参数添加到url中,get形式的参数
  • data 将字典或字节序列,作为参数添加到url中,post形式的参数
  • headers 请求头,可以修改User-Agent等参数
  • timeout 超时时间
  • proxies 设置代理
# -*- coding: utf-8 -*-
import requests #调用requests模块
from lxml import etree #调用html解析
from Chaojiying_Python import chaojiying #调用超级鹰打码平台
import time # 调用时间模块headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"} #模仿浏览器UA头session = requests.Session()# 动态获取cookie
# 识别验证码
url ="https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx"
page_text = session.get(url=url,headers=headers).text
# 解析验证码图片
tree = etree.HTML(page_text)
img_src = "https://so.gushiwen.cn/"+tree.xpath('//*[@id="imgCode"]/@src')[0]
# 将验证码图片保存到本地
img_data = session.get(img_src,headers=headers).content
with open ('C:/Users/gpc/Desktop/python/Chaojiying_Python/code.jpg',"wb") as fp:fp.write(img_data)# 识别验证码
code_text = chaojiying.Chaojiying_Client.tranformImgCode()
time.sleep(2)login_url = "https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx"
data = {# 如果在请求参数中看见一组乱序的请求参数,需要抓包验证下是否动态变化如下:"__VIEWSTATE" "__VIEWSTATEGENERATOR"# 如果是动态变化的参数一般会隐藏在前台源码中,我们需要进行xpaht 或者正则 等方式进行提取 就可以获得实时的参数# 如果前台源码中没有,我们可以通过抓包全局收索获取对应的数据包提取参数赋值到data中"__VIEWSTATE": "wLzVsPN64jZIa8aQJI9HzVvaaknH6pBhUG+UOMQKX8NEFV49xwtLRgU8GH4O1o+mClDbtnYiKbXMOIM6VRh7HGzM4hpMpd0qBUM3b/pXlzZ2gnbcuB+5RUBJ/i0=","__VIEWSTATEGENERATOR": "C93BE1AE","from": "http://so.gushiwen.cn/user/collect.aspx","email": "18398149392","pwd": "cheng.1023","code": code_text,# 验证码动态变化"denglu": "登录"
}
# 对点击登录按钮发起请求,获取了登录成功后的页面源码数据
page_text_login = session.post(url = login_url,headers=headers,data=data).text
print(page_text_login)
# -*- coding: utf-8 -*-
import requests # 调用模块headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
} #模仿浏览器UA头
url = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList" # 指定urlfor pg in range(1,6):data = {"on": "true","page": str(pg),"pageSize": "15","productName":"","conditionType": "1","applyname":"","applysn":""}response = requests.post(url=url,headers=headers,data=data) # 发起请求get方法的返回值为响应对象page_text = response.json() # 将获取的字符串形式的json数据序列化成字典或者列表对象uuid = page_text["list"]for idd in uuid:iidd = (idd["ID"])# 爬取详情数据url2 = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById" # 指定urldata2 = {"id":iidd}response = requests.post(url=url2,headers=headers,data=data2) # 发起请求get方法的返回值为响应对象page_text = response.json() # 将获取的字符串形式的json数据序列化成字典或者列表对象qymc = page_text["epsName"]xkzbh = page_text["productSn"]xkxm = page_text["certStr"]qyzs = page_text["epsAddress"]scdz = page_text["epsProductAddress"]shxydm = page_text["businessLicenseNumber"]fddbr = page_text["businessPerson"]qyfzr = page_text["legalPerson"]zlfzr = page_text["qualityPerson"]fzjg = page_text["qfManagerName"]qfr = page_text["xkName"]rcjdgljg = page_text["rcManagerDepartName"]rcjdglry = page_text["rcManagerUser"]yxq = page_text["xkDate"]fzrq = page_text["xkDateStr"]xiangqing = ("企业名称:" + qymc + "\n" + "许可证编号:" + xkzbh + "\n" + "许可项目:" + xkxm + "\n" + "企业住所:" + qyzs + "\n" + "生产地址:" + scdz + "\n" + "社会信用代码:" + shxydm + "\n" + "法定代表人:" + fddbr + "\n" + "企业负责人:" + qyfzr + "\n" + "质量负责人:" + zlfzr + "\n" + "发证机关:" + fzjg + "\n" + "签发人:" + qfr + "\n" + "日常监督管理机构:" + rcjdgljg + "\n" + "日常监督管理人员:" + rcjdglry + "\n" + "有效期至:" + yxq + "\n" + "发证日期:" + fzrq)print(xiangqing)with open ("药监局详情爬取.txt","a",encoding="utf-8") as  fp:  # 持续化存储 (w写 r读 a追加)fp.write(xiangqing + "\n")
# -*- coding: utf-8 -*-import requests # 调用模块headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
} #模仿浏览器UA头
url = "https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20" # 指定urlparams = {'type': '5','interval_id': '100:90','action':'','start': '0','limit': '20'
}response = requests.get(url=url,headers=headers,params=params) # 发起请求get方法的返回值为响应对象page_text = response.json() # 将获取的字符串形式的json数据序列化成字典或者列表对象
#page_text = response.text # 获取响应数据,text为字符串形式的相应数据# 解析出电影的名称+评分for movie in page_text:name = movie['title']score = movie['score']print(name,score)with open ("豆瓣.txt","a",encoding="utf-8") as  fp:  # 持续化存储 (w写 r读 a追加)fp.write(name + " " + score + "\n")

02-requests模块的概述相关推荐

  1. requests模块02

    requests模块02 文章目录 requests模块02 一.发送带请求头的请求 1.查看网页源码的方法: 2.查看对应urI的响应内容的方法: 3.携带请求头发送请求的方法 二.发送带参数的请求 ...

  2. 爬虫入门—requests模块基础之关键字搜狗搜索信息页面爬取

    爬虫入门-requests模块基础之关键字搜狗搜索信息页面爬取 Author: Labyrinthine Leo   Init_time: 2021.02.16 Key Words: Spider.r ...

  3. 爬虫入门—requests模块基础之药监企业信息爬取

    爬虫入门-requests模块基础之药监企业信息爬取 Author: Labyrinthine Leo   Init_time: 2021.02.22 Key Words: Spider.reques ...

  4. 爬虫入门—requests模块之搜狗首页下载

    爬虫入门-requests模块之搜狗首页下载 Author: Labyrinthine Leo   Init_time: 2021.02.16 Key Words: Spider.requests库 ...

  5. 爬虫之requests模块发送post请求

    爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...

  6. 爬虫之requests模块超时参数timeout的使用

    爬虫之requests模块超时参数timeout的使用 在平时网上冲浪的过程中,我们经常会遇到网络波动,这个时候,一个请求等了很久可能任然没有结果. 在爬虫中,一个请求很久没有结果,就会让整个项目的效 ...

  7. 爬虫之requests模块cookieJar对象转换为cookies字典的方法

    爬虫之requests模块cookieJar对象转换为cookies字典的方法 使用requests获取的resposne对象,具有cookies属性.该属性值是一个cookieJar类型,包含了对方 ...

  8. 爬虫之requests模块中cookies参数的使用

    爬虫之requests模块中cookies参数的使用 上一篇文章在headers参数中携带cookie,也可以使用专门的cookies参数 cookies参数的形式:字典 cookies = {&qu ...

  9. 爬虫之requests模块在headers参数中携带cookie发送请求

    爬虫之requests模块在headers参数中携带cookie发送请求 网站经常利用请求头中的Cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加Cookie,模拟普通用户 ...

  10. 爬虫之requests模块发送带参数的请求

    爬虫之requests模块发送带参数的请求 我们在使用百度搜索的时候经常发现url地址中会有一个 ?,那么该问号后边的就是请求参数,又叫做查询字符串 1.1 在url携带参数 直接对含有参数的url发 ...

最新文章

  1. Android绘图机制与处理技巧-更新中
  2. 前后端分离之Vue(三)爬过得那些坑
  3. oracle 数据库备份恢复
  4. [Qt教程] 第44篇 进阶(四)信号和槽
  5. Cisco三层交换机DHCP中继简单配置
  6. android activity动态显示不出来,uiautomatorviewer 获取不到动态页面解决办法
  7. python文件下载速度 装饰器_python使用装饰器对文件进行读写操作'及遍历文件目录...
  8. [ci] jenkins的Timestamper插件-让日志显示时间
  9. sdi线缆标准_常见的视频信号传输线缆种类及传输距离线缆有哪些?
  10. 阿里云技术天团空降CSDN独家在线峰会,揭秘核心竞争力
  11. 洛天依-元宵吃货节歌词
  12. 一个四维混沌吸引子曲线(matlab完整代码)
  13. 频繁gc是什么意思_CPU飙高,频繁GC,怎么排查?
  14. Linux 中 Permission denied
  15. 菩提本无树 明镜亦非台
  16. php时间函数不准确,php date函数时间不对如何解决
  17. Spring ,Spring Tolls Suit 任何版本下载
  18. 【520表白】C语言开发《浪漫流星雨》表白程序,源码来了!
  19. 家教o2o平台有哪些
  20. 英语cymophanite猫眼石cymophanite单词

热门文章

  1. PHP设置文本框背景透明度,如何给background-image设置透明度?
  2. 21 个非常有用的 .htaccess 提示和技巧
  3. PHP_Mysql注入防护与绕过
  4. 一句话实现php日期转中文汉字
  5. HTTPS 工作原理和 TCP 握手机制
  6. postman可以测试websocket吗_小海塔罗娱乐测试2021年可以脱单吗?
  7. em算法详细例子及推导_outlier analysis 补充——EM算法
  8. 二 用标准c语言实现hanoi塔问题,天大2016年1二月《数据结构》期末大作业考核要求.doc...
  9. jq点击按钮获取php的值删除,通过jquery怎么移除点击事件
  10. html缓存在本地缓存,HTML5 本地缓存 window.localStorage