requests模块

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

  • 什么是requests模块

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

      • 手动处理url编码
      • 手动处理post请求参数
      • 处理cookie和代理操作繁琐
      • ......
    • 使用requests模块:
      • 自动处理url编码
      • 自动处理post请求参数
      • 简化cookie和代理操作
      • ......
  • 如何使用requests模块
    • 安装:

      • pip install requests
    • 使用流程
      • 指定url
      • 基于requests模块发起请求
      • 获取响应对象中的数据值
      • 持久化存储
  • 通过5个基于requests模块的爬虫项目对该模块进行学习和巩固
    • 基于requests模块的get请求

      • 需求:爬取搜狗指定词条搜索后的页面数据
    • 基于requests模块的post请求
      • 需求:登录豆瓣电影,爬取登录成功后的页面数据
    • 基于requests模块ajax的get请求
    • 基于requests模块ajax的post请求
    • 综合练习
      • 需求:爬取搜狗知乎指定词条指定页码下的页面数据

- 代码展示

  • 需求:爬取搜狗指定词条搜索后的页面数据

    1. import requests
    2. import os
    3. #指定搜索关键字
    4. word = input('enter a word you want to search:')
    5. #自定义请求头信息
    6. headers={
    7. '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',
    8. }
    9. #指定url
    10. url = 'https://www.sogou.com/web'
    11. #封装get请求参数
    12. prams = {
    13. 'query':word,
    14. 'ie':'utf-8'
    15. }
    16. #发起请求
    17. response = requests.get(url=url,params=param)
    18.  
    19. #获取响应数据
    20. page_text = response.text
    21.  
    22. with open('./sougou.html','w',encoding='utf-8') as fp:
    23. fp.write(page_text)
  • 需求:登录豆瓣电影,爬取登录成功后的页面数据
    1. import requests
    2. import os
    3. url = 'https://accounts.douban.com/login'
    4. #封装请求参数
    5. data = {
    6. "source": "movie",
    7. "redir": "https://movie.douban.com/",
    8. "form_email": "",
    9. "form_password": "bobo@15027900535",
    10. "login": "登录",
    11. }
    12. #自定义请求头信息
    13. headers={
    14. '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',
    15. }
    16. response = requests.post(url=url,data=data)
    17. page_text = response.text
    18.  
    19. with open('./douban111.html','w',encoding='utf-8') as fp:
    20. fp.write(page_text)
  • 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据
    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3.  
    4. import requests
    5. import urllib.request
    6. if __name__ == "__main__":
    7.  
    8. #指定ajax-get请求的url(通过抓包进行获取)
    9. url = 'https://movie.douban.com/j/chart/top_list?'
    10.  
    11. #定制请求头信息,相关的头信息必须封装在字典结构中
    12. headers = {
    13. #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
    14. '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',
    15. }
    16.  
    17. #定制get请求携带的参数(从抓包工具中获取)
    18. param = {
    19. 'type':'',
    20. 'interval_id':'100:90',
    21. 'action':'',
    22. 'start':'',
    23. 'limit':''
    24. }
    25. #发起get请求,获取响应对象
    26. response = requests.get(url=url,headers=headers,params=param)
    27.  
    28. #获取响应内容:响应内容为json串
    29. print(response.text)
  • 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3.  
    4. import requests
    5. import urllib.request
    6. if __name__ == "__main__":
    7.  
    8. #指定ajax-post请求的url(通过抓包进行获取)
    9. url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    10.  
    11. #定制请求头信息,相关的头信息必须封装在字典结构中
    12. headers = {
    13. #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
    14. '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',
    15. }
    16.  
    17. #定制post请求携带的参数(从抓包工具中获取)
    18. data = {
    19. 'cname':'',
    20. 'pid':'',
    21. 'keyword':'北京',
    22. 'pageIndex': '',
    23. 'pageSize': ''
    24. }
    25. #发起post请求,获取响应对象
    26. response = requests.get(url=url,headers=headers,data=data)
    27.  
    28. #获取响应内容:响应内容为json串
    29. print(response.text)
  • 需求:爬取搜狗知乎指定词条指定页码下的页面数据
    1. import requests
    2. import os
    3. #指定搜索关键字
    4. word = input('enter a word you want to search:')
    5. #指定起始页码
    6. start_page = int(input('enter start page num:'))
    7. end_page = int(input('enter end page num:'))
    8. #自定义请求头信息
    9. headers={
    10. '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',
    11. }
    12. #指定url
    13. url = 'https://zhihu.sogou.com/zhihu'
    14. #创建文件夹
    15. if not os.path.exists('./sougou'):
    16. os.mkdir('./sougou')
    17. for page in range(start_page,end_page+1):
    18. #封装get请求参数
    19. params = {
    20. 'query':word,
    21. 'ie':'utf-8',
    22. 'page':str(page)
    23. }
    24. #发起post请求,获取响应对象
    25. response = requests.get(url=url,params=params)
    26. #获取页面数据
    27. page_text = response.text
    28. fileName = word+'_'+str(page)+'.html'
    29. filePath = './sougou/'+fileName
    30. with open(filePath,'w',encoding='utf-8') as fp:
    31. fp.write(page_text)
    32. print('爬取'+str(page)+'页结束')

25-1 request模块介绍的更多相关文章

  1. request 模块详细介绍

    request 模块详细介绍 request Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装 ...

  2. WebKit由三个模块组成-Webkit模块介绍

    2.       Webkit 源代码由三大模块组成: 1). WebCore, 2). WebKit, 3). JavaScriptCore. WebCore:排版引擎核心,WebCore包含主要以 ...

  3. python3中urllib库的request模块详解

    刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊! 原帖地址:https://www.2cto.com/kf/201801/714859.html 什么是 Urlli ...

  4. node.js的request模块

    request模块让http请求变的更加简单.最简单的一个示例: 1: var request = require('request'); 2:  3: request('http://www.goo ...

  5. webkit模块介绍

    一.Webkit模块   用到的第三方库如下:   cairo 一个2D绘图库 casqt Unicode处理用的库,从QT中抽取部分代码形成的 expat 一个XML SAX解析器的库 freety ...

  6. python模块介绍- multi-mechanize 性能测试工具

    python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...

  7. python模块介绍- xlwt 创建xls文件(excel)

    python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...

  8. upstream模块介绍

    upstream模块介绍 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass.fastcgi_pass.memcached_pa ...

  9. 大数据技术之_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 ...

随机推荐

  1. 通过游戏学python 3.6 第一季 第三章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码 可复制直接使用 娱乐 可封装 函数

       猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码   #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码 import random secrst = random.rand ...

  2. TZ_05_Spring_事物的xml开发和annotation开发

    1.Spring_事物的xml开发 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...

  3. vue多页面项目配置

    全局配置 打开 ~\build\webpack.base.conf.js ,找到entry,添加多入口 entry: { main: './src/main.js', main2: './src/ma ...

  4. laravel-admin 报错 Disk [admin] not configured, please add a disk config in `config/filesystems.php`.

    在config/filesystems.php中添加: 'disks' => [ 'local' => [        'driver' => 'local',        'r ...

  5. LintCode 合并两个排序

    将两个排序链表合并为一个新的排序链表 样例 给出 1->3->8->11->15->null,2->null, 返回1->2->3->8-> ...

  6. 引入样式表(css)的四种方式

    一.使用style属性: 将style属性直接加在html标签里. <标签 style="属性1: 设定值1; 属性2: 设定值2; "> 例如: <td sty ...

  7. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】

    题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...

  8. 2019-9-2-C#判断文件是否被混淆

    title author date CreateTime categories C#判断文件是否被混淆 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 17:2 ...

  9. 手机号测吉凶python代码

    根据数理数来测电话后四位吉凶: 数理数 解释批注 0点特殊.......大吉 1大展鸿图.可获成功吉 2一盛一衰.劳而无功凶 3蒸蒸日上.百事顺遂吉 4坎坷前途.苦难折磨凶 5生意欣荣.名利双收吉 6 ...

  10. HDU - 1724 Ellipse 自适应辛普森模板

    OJ 题解传送门 //Achen #include<algorithm> #include<iostream> #include<cstring> #include ...