requests模块

-1. 什么是requests模块- python原生的一个基于网络请求的模块,模拟浏览器发起请求。
-2. 为什么使用requests模块-1. 自动处理url编码-2. 自动处理post请求参数-3. 简化cookie和代理的操作-3. requests模块如何被使用安装: pip install requests使用流程:1. 指定url2. 使用requests模块发送请求3. 获取响应数据4. 进行持久化存储-4. 通过5个基于requests模块的爬虫项目对该模块进行系统学习和巩固-get请求-post请求-ajax的get-ajax的post-综合

基于requests模块发起get请求

- 需求:爬取搜狗首页的页面数据
import requests
#指定url
url= 'https://www.sogou.com/'
#发起get请求:get方法会返回成功的响应对象
response = requests.get(url=url)
# 获取响应中的数据值:text可以获取响应对象中字符串形式的页面数据
page_data = response.text
#持久化操作
with open('sogo.html','w',encoding='utf-8') as f:f.write(page_data)

#response对象中其他重要属性
import requests
#指定url
url= 'https://www.sogou.com/'
#发起get请求:get方法会返回成功的响应对象
response = requests.get(url=url)response.content     #获取的是response对象中二进制(byte)类型的页面数据

response.status_code #返回一个响应状态码如200 或404 

response.headers     #返回响应头信息

response.url         #获取请求的url

requests模块如何处理带参数的get请求(两种方式)

  • 需求:指定一个词条,获取搜狗搜索结果对应的页面数据

    #方式1
    import requestsurl = 'http://www.sogou.com/web?query=金角大王&ie=utf-8'response = requests.get(url=url)page_text = response.textwith open('jinjiao.html','w',encoding='utf-8') as f:f.write(page_text)

    #方式2
    import requestsurl = 'http://www.sogou.com/web'#将参数封装到字典中
    params = {'query':'金角大王','ie':'utf-8'
    }response = requests.get(url=url,params=params)
    page_text = response.textwith open('jinjiao.html','w',encoding='utf-8') as f:f.write(page_text)

    #自定义请求头信息
    import requestsurl = 'http://www.sogou.com/web'#将参数封装到字典中
    params = {'query':'金角大王','ie':'utf-8'
    }
    #自定义请求头信息 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    response = requests.get(url=url,params=params,headers=headers)response.status_code

    基于requests模块发起post请求

    - 需求:登录豆瓣网,获取登录成功后的页面数据
    - tip 如果找不到post请求,试试输错密码寻找
    - 现在豆瓣改版了,只能获取到登录信息cookiesession等类型的东西。但是可以用request.session登录后继续获取页面
    import requests
    #1 指定post请求的url
    url = 'https://accounts.douban.com/j/mobile/login/basic'#封装post请求的参数
    data= {'ck': '','name': '13520750458','password': '1123lys','remember': 'false','ticket':'',
    }
    #自定义请求头信息
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    #2 发起post请求
    response = requests.post(url=url,data=data,headers=headers)#获取响应对象中的页面数据
    page_text = response.text
    print(page_text)
    #持久化操作
    with open('douban.html','w',encoding='utf-8') as f:f.write(page_text)

    基于ajax的get请求

    - 抓取豆瓣电影上的电影详情的数据
    import requests
    #方式一
    url = 'https://movie.douban.com/j/chart/top_list?type=20&interval_id=100%3A90&action=&start=80&limit=20'
    #自定义请求头信息
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    response = requests.get(url=url,headers=headers)
    # print(response.text) #返回的是json格式的数据

    import requests
    #方式二
    url = 'https://movie.douban.com/j/chart/top_list?'
    #封装ajax中get请求携带的参数
    params={'type':'20','interval_id':'100:90','action':'','start':'80','limit':'20',}#自定义请求头信息
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    response = requests.get(url=url,params=params,headers=headers)
    # print(response.text)  #返回的是json格式的数据

    基于ajax的post请求

    -需求 爬取肯德基城市餐厅的位置数据
    import requestsurl = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    # 处理post请求参数
    data = {'cname':'','pid':'','keyword':'北京','pageIndex':'1','pageSize':'10',
    }
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    #发起基于ajax的post请求
    response = requests.post(url=url,data=data,headers=headers)response.text
    type(response.text)

    总结

    基于ajax的post和get请求和普通的get请求没什么区别,唯一不同就是获取url,ajax要用抓包工具去获取基于ajax的异步请求的url,因为ajax的地址栏的url不变的,必须去获取真正的url

  

requests模块高级(cookie操作):

- cookie:基于用户的用户数据- 需求: 爬取张三用户的豆瓣网的个人主页页面数据
- cookie作用:服务器端使用cookie来记录客户端的状态信息
实现流程:1.执行登录操作(获取cookie)2.在发起个人主页请求时,需要将cookie携带到该请求中注意:session对象:发送请求(会将cookie对象进行自动存储)
import requests
#创建session对象
session = requests.session()
#1 发起登录请求:session对象将cookie获取,且自动存储到session对象中
login_url = 'https://accounts.douban.com/j/mobile/login/basic'
data= {'ck': '','name': '13520750458','password': '1123lys','remember': 'false','ticket':'',
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
#使用session对象发起post请求
login_response = session.post(url=login_url,data=data,headers=headers)#2 对个人主页发起请求(session(cookie)),获取响应页面数据
url = 'https://www.douban.com/people/191748483/'
response = session.get(url=url,headers=headers)
page_text = response.textwith open('douban110.html','w',encoding='utf-8')as f:f.write(page_text)print(page_text)

requests模块高级(代理操作):

- 1 代理:第三方代理本体执行相关的事物
- 2 为什么要使用代理?-反爬手段-反反扒手段
- 3 分类:-正向代理:代理客户端获取数据-反向代理:代替服务端提供数据
- 4 免费代理IP的网站提供商:- www.goubanjia.com- 快代理- 西祠代理
- 5 代码
import requestsurl = 'https://www.baidu.com/s?wd=ip&ie=utf-8'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
#将代理ip封装到字典,(前面url的协议要与代理ip的协议类型相同,如都是https或http,如果不同需修改url的协议)
proxy = {'https':'222.74.237.246:808'
}
#更换网络ip
response = requests.get(url=url,proxies=proxy,headers=headers)with open('./daili.html','wb')as f:f.write(response.content)print(response.content)

综合项目实战

-需求 爬取搜狗知乎某一个词条对应一定范围页码表示的页面数据
import requests
import os# 创建一个文件夹
if not os.path.exists('./pages'):os.mkdir('./pages')
word = input('enter a word')
#动态指定页码范围
start_page = int(input('enter a start pageNum'))
end_page = int(input('enter an end pageNum'))url = 'https://zhihu.sogou.com/zhihu?'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
for page in range(start_page,end_page+1):params = {'query':word,'page':page,'ie':'utf-8',      }response = requests.get(url=url,params=params,headers=headers)page_text = response.textfilename = word+str(page)+'.html'filePath = 'pages/'+filenamewith open(filePath,'w',encoding='utf-8') as f:f.write(page_text)print('第%s页写入成功'%page)


转载于:https://www.cnblogs.com/lys666/p/10477814.html

requests模块相关用法相关推荐

  1. Python requests模块高级用法

    2019独角兽企业重金招聘Python工程师标准>>> 快速入门的话可以参考这篇文章,但是进阶的话还是建议参考官方的文档,毕竟官方的文档更新比较及时,也有些高级用法,猛戳这里! 会话 ...

  2. Python requests模块相关接口

    2019独角兽企业重金招聘Python工程师标准>>> 主要接口 Requests 所有的功能都可以通过以下 7 个方法访问.它们全部都会返回一个 Response 对象的实例. r ...

  3. requests模块用法举例

    json 请求 #! /usr/bin/python3 import requests import jsonclass url_request():def __init__(self):''' in ...

  4. python网络爬虫之requests模块

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

  5. python中的requests模块的使用大全

    1.requests模块: 企业中用的最多的就是requests requests的底层实现就是urllib requests在python2 和python3中通用,方法完全一样 requests简 ...

  6. 全程干货,requests模块与selenium框架详解

    requests模块 前言: 通常我们利用Python写一些WEB程序.webAPI部署在服务端,让客户端request,我们作为服务器端response数据: 但也可以反主为客利用Python的re ...

  7. python模块的使用方法_python中requests模块的使用方法

    本文实例讲述了python中requests模块的使用方法.分享给大家供大家参考.具体分析如下: 在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合 ...

  8. requests模块

    使用requests 了解了urllib的基本用法,但是其中确实又不方便的地方,比如在处理网页验证和cooki时,需要写Opener和Hander来处理器,而reuqests方法对于解决Cookies ...

  9. 爬虫学习笔记(第二章)requests模块

    文章目录 前言 第二章 request模块 简介 实战编码 ①爬取搜狗首页的页面数据 实战巩固 ②网页采集器 UA ③破解百度翻译 ④豆瓣电影爬取 ⑤肯德基餐厅位置爬取 ⑥药监总局相关数据爬取 前言 ...

最新文章

  1. 8个可以提高数据科学工作效率、节省宝贵时间的Python库
  2. Spring Boot项目部署到Heroku
  3. SAP 电商云 UI State persistence 状态持久化设计的入口 - initSync
  4. 计算机 ieee access,计算机 | IEEE Access 诚邀专刊稿件 (IF:3.557)
  5. ruby+gem常用命令
  6. IIS Rewrite配置与 Rewrite.dll下载
  7. 哔哩哔哩助手:bilibili综合辅助扩展Chrome插件
  8. FFmpeg学习(三)-- libavutil 代码组成
  9. 关键词抓取规则,关键词标题SEO技巧
  10. 2021最新版上传透明头像易语言源码
  11. 电商交易背景知识合集第一季
  12. 微信公众号模板消息推送问题汇总
  13. 隐函数(组)存在定理
  14. Build-dep linux 知乎,apt-get build-dep十分有用的命令
  15. 太阳能基站光照跟随逐日PLC控制实训设备QY-PV26
  16. C++头文件和源文件的编译过程
  17. 数据结构中频度的详细总结
  18. 了解一下国标和行标的代号
  19. 重量级大咖来袭:阿里云生命科学与智能计算峰会精彩内容剧透
  20. ICS计算系统概论LC3汇编实验Lab5—中断、递归解决汉诺塔问题

热门文章

  1. android 通讯录 备份,安卓Android手机通讯录怎么备份 卓联系人备份 卓手机联系人导出...
  2. mysql 5.764_RHEL5.764位源码编译安装MySQL-5.5.42遇到的问题
  3. 多进程与多线程通信同步机制
  4. 根据当前docker容器生成镜像提交到远端服务器
  5. linux常用解压和压缩文件的命令
  6. MachineLearning(4)-核函数与再生核希尔伯特空间
  7. 《Python Cookbook 3rd》笔记(4.16):迭代器代替 while 无限循环
  8. codeforces 112A-C语言解题报告
  9. ClickHouse 客户端命令
  10. Java基础——Java NIO详解(一)