25-1 request模块介绍
requests模块
- 基于如下5点展开requests模块的学习
- 什么是requests模块
- requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
 
- 为什么要使用requests模块
- 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
- 手动处理url编码
- 手动处理post请求参数
- 处理cookie和代理操作繁琐
- ......
 
- 使用requests模块:
- 自动处理url编码
- 自动处理post请求参数
- 简化cookie和代理操作
- ......
 
 
- 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
- 如何使用requests模块
- 安装:
- pip install requests
 
- 使用流程
- 指定url
- 基于requests模块发起请求
- 获取响应对象中的数据值
- 持久化存储
 
 
- 安装:
- 通过5个基于requests模块的爬虫项目对该模块进行学习和巩固
- 基于requests模块的get请求
- 需求:爬取搜狗指定词条搜索后的页面数据
 
- 基于requests模块的post请求
- 需求:登录豆瓣电影,爬取登录成功后的页面数据
 
- 基于requests模块ajax的get请求
- 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据
 
- 基于requests模块ajax的post请求
- 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
 
- 综合练习
- 需求:爬取搜狗知乎指定词条指定页码下的页面数据
 
 
- 基于requests模块的get请求
- 代码展示
- 需求:爬取搜狗指定词条搜索后的页面数据
import requests 
 import os
 #指定搜索关键字
 word = input('enter a word you want to search:')
 #自定义请求头信息
 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'
 #封装get请求参数
 prams = {
 'query':word,
 'ie':'utf-8'
 }
 #发起请求
 response = requests.get(url=url,params=param) #获取响应数据
 page_text = response.text with open('./sougou.html','w',encoding='utf-8') as fp:
 fp.write(page_text)
- 需求:登录豆瓣电影,爬取登录成功后的页面数据
import requests 
 import os
 url = 'https://accounts.douban.com/login'
 #封装请求参数
 data = {
 "source": "movie",
 "redir": "https://movie.douban.com/",
 "form_email": "",
 "form_password": "bobo@15027900535",
 "login": "登录",
 }
 #自定义请求头信息
 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',
 }
 response = requests.post(url=url,data=data)
 page_text = response.text with open('./douban111.html','w',encoding='utf-8') as fp:
 fp.write(page_text)
- 需求:爬取豆瓣电影分类排行榜 https://movie.douban.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':'',
 'interval_id':'100:90',
 'action':'',
 'start':'',
 'limit':''
 }
 #发起get请求,获取响应对象
 response = requests.get(url=url,headers=headers,params=param) #获取响应内容:响应内容为json串
 print(response.text)
- 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
#!/usr/bin/env python 
 # -*- coding:utf-8 -*- import requests
 import urllib.request
 if __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': '',
 'pageSize': ''
 }
 #发起post请求,获取响应对象
 response = requests.get(url=url,headers=headers,data=data) #获取响应内容:响应内容为json串
 print(response.text)
- 需求:爬取搜狗知乎指定词条指定页码下的页面数据
import requests 
 import os
 #指定搜索关键字
 word = input('enter a word you want to search:')
 #指定起始页码
 start_page = int(input('enter start page num:'))
 end_page = int(input('enter end page num:'))
 #自定义请求头信息
 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://zhihu.sogou.com/zhihu'
 #创建文件夹
 if not os.path.exists('./sougou'):
 os.mkdir('./sougou')
 for page in range(start_page,end_page+1):
 #封装get请求参数
 params = {
 'query':word,
 'ie':'utf-8',
 'page':str(page)
 }
 #发起post请求,获取响应对象
 response = requests.get(url=url,params=params)
 #获取页面数据
 page_text = response.text
 fileName = word+'_'+str(page)+'.html'
 filePath = './sougou/'+fileName
 with open(filePath,'w',encoding='utf-8') as fp:
 fp.write(page_text)
 print('爬取'+str(page)+'页结束')
25-1 request模块介绍的更多相关文章
- request 模块详细介绍
		request 模块详细介绍 request Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装 ... 
- WebKit由三个模块组成-Webkit模块介绍
		2. Webkit 源代码由三大模块组成: 1). WebCore, 2). WebKit, 3). JavaScriptCore. WebCore:排版引擎核心,WebCore包含主要以 ... 
- python3中urllib库的request模块详解
		刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊! 原帖地址:https://www.2cto.com/kf/201801/714859.html 什么是 Urlli ... 
- node.js的request模块
		request模块让http请求变的更加简单.最简单的一个示例: 1: var request = require('request'); 2: 3: request('http://www.goo ... 
- webkit模块介绍
		一.Webkit模块 用到的第三方库如下: cairo 一个2D绘图库 casqt Unicode处理用的库,从QT中抽取部分代码形成的 expat 一个XML SAX解析器的库 freety ... 
- python模块介绍- multi-mechanize 性能测试工具
		python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ... 
- python模块介绍- xlwt 创建xls文件(excel)
		python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ... 
- upstream模块介绍
		upstream模块介绍 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass.fastcgi_pass.memcached_pa ... 
- 大数据技术之_14_Oozie学习_Oozie 的简介+Oozie 的功能模块介绍+Oozie 的部署+Oozie 的使用案列
		第1章 Oozie 的简介第2章 Oozie 的功能模块介绍2.1 模块2.2 常用节点第3章 Oozie 的部署3.1 部署 Hadoop(CDH版本的)3.1.1 解压缩 CDH 版本的 hado ... 
随机推荐
- 跟我一起做一个vue的小项目(三)
			接下来我们进行轮播的开发 安装插件,选用2.6.7的稳定版本 npm install vue-awesome-swiper@2.6.7 --save 根据其github上面的用法,我们在全局引用,在m ... 
- windows console 控制台自启动
			var fileName = Assembly.GetExecutingAssembly().Location; System.Diagnostics.Process.Start(fileName); 
- Python 字符串与二进制串的相互转换
			def encode(s): return ' '.join([bin(ord(c)).replace('0b', '') for c in s]) def decode(s): return ''. ... 
- 傻瓜式教程--实现登录页面的验证码以及验证(VUE)
			做成之后就 是这个样子 接下来上代码创建一个组件.显示验证码图片 <template> <div class="s-canvas"> <canvas ... 
- IO流2 --- File类的常用方法1 --- 技术搬运工(尚硅谷)
			File类的获取功能 @Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new ... 
- Spring Boot Redis 集成配置(转)
			Spring Boot Redis 集成配置 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px #ede ... 
- day38 05-Spring的BeanFactory与ApplicationContext区别
			ApplicationContext怎么知道它是一个工厂呢? BeanFactory也可以做刚才那些事情,只不过ApplicationContext对它有扩展.ApplicationContext间接 ... 
- WCF  无管理员权限下启用服务
			1 使用 netsh.exe 工具 C:\Windows\system32>netsh http add urlacl url=http://+:8733/WcfServiceLibrary1 ... 
- 访问Bing地图
			<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ... 
- FZU  1576【计算几何/费马点】
			Oaiei居住在A城市,并且是这个城市建设的总设计师.最近有个问题一直困恼着他.A城市里有三个大型工厂,每个大型工厂每天都需要消耗大量的石油,现在城市里要建设一个石油中转站,从石油中转站到三个大型工厂 ... 
