requests模块基础

什么是requests模块 requests模块是python中原生基于网络模拟浏览器发送请求模块。功能强大,用法简洁高效。


为什么要是用requests模块

  • 用以前的urllib模块需要手动处理url编码
  • 手动处理post参数
  • 处理cookie和代理操作繁琐

..............


requests模块

  • 自动处理url编码
  • 自动处理post参数
  • 简化cookie和代理操作

...............


如何使用requests模块

    • 安装:

      • pip install requests
    • 使用流程
      • 指定url
      • 基于requests模块发起请求
      • 获取响应对象中的数据值
      • 持久化存储
  •     
  • 1、基于requests模块的get请求 需求:爬取搜狗指定词条搜索后的页面数据
  •  import requests
    #指定url
    base_url = "https://www.sogou.com/web"
    #搜索词条的关键字
    query = {
    "query":"python"
    }
    #模仿User-Agent(伪造电脑版本信息以及什么浏览器信息)
    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"
    }
    #requests.get(url, params=None, **kwargs),第一个是url地址,第二个关键字参数。
    response = requests.get(url=base_url,params=query,headers=headers)
    #因为发送的是get方式 所以返回的是一个字符串,即text可得相关html标签页
    print(response.text)
  • 2、基于requests模块ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据

  •  import requests
    url = "https://movie.douban.com/j/chart/top_list"
    #根据需求取数据
    start = input("enter start:")
    limit = input("enter limt:")
    #请求头里面的请求关键字
    param = {
    "type": "",
    "interval_id": "100:90",
    "action": "",
    "start": start,
    "limit": limit,
    }
    #伪造机型和浏览器
    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",
    }
    #开始get请求,因为是ajax的get方法所以请求应该是get
    response = requests.get(url=url,params=param,headers=headers)
    #返回的是一个json数据,因此要用json解析
    print(response.json())

    3、基于requests模块ajax的post请求 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据

     import requests
    url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"
    #输入保存信息地点
    keyword = input("enter a word:")
    #请求头里面的请求关键字
    for i in range(1,9):
    data = {
    "cname":"",
    "pid": "",
    "keyword": keyword,
    "pageIndex": i,
    "pageSize": "",
    }
    #伪造机型和浏览器
    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",
    }
    #因为是ajax的post方法所以post请求
    response = requests.post(url=url,data=data,headers=headers)
    #响应的是一个text数据,因此要用text解析
    fileName = str(i)+".txt"
    with open(fileName,"w",encoding="utf8") as f:
    f.write(response.text)

    显示文件有:

    4、综合练习 需求:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据http://125.35.6.84:81/xk/

     import requests
    
     url = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList"
    ID_list = []
    # 伪造机型和浏览器
    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",
    }
    for i in range(1,16):
    data = {
    "on": "true",
    "page": i,
    "pageSize": "",
    "productName": "",
    "conditionType": "",
    "applyname": "",
    "applysn": "",
    } #因为是ajax的post方法所以post请求
    response = requests.post(url=url,data=data,headers=headers).json() ID_list.append(response["list"][0]["ID"])
    base_url = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById"
    for i in ID_list:
    data = {
    "id": i,
    }
    # 响应的是一个json数据,因此要用json解析
    response = requests.post(url=base_url,data=data,headers=headers)
    print(response.json())

    Jupyter notebook应该是库出问题了,找了很久都没弄到原因,还一直以为自己代码出现问题了。换到pycharm成功运行

03爬虫-requests模块基础(1)的更多相关文章

  1. 05爬虫-requests模块基础(2)

    今日重点: 1.代理服务器的设置 2.模拟登陆过验证码(静态验证码) 3.cookie与session 4.线程池 1.代理服务器的设置 有时候使用同一个IP去爬取同一个网站,久了之后会被该网站服务器 ...

  2. 爬虫之requests模块基础

    一.request模块介绍 1. 什么是request模块 - python中原生的基于网络请求的模块,模拟浏览器发起请求. 2. 为什么使用request模块 - urllib需要手动处理url编码 ...

  3. 03 requests模块基础

    1. requests 模块简介 什么是requests 模块 requests模块是python中原生的基于网络请求的模块,功能强大,用法简洁高效.在爬虫领域中占据着半壁江山的地位.requests ...

  4. 爬虫requests模块 1

    让我们从一些简单的示例开始吧. 发送请求¶ 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试 ...

  5. 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例

    requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...

  6. 爬虫——requests模块

    一 爬虫简介 #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共享/传递:数据是 ...

  7. 2 爬虫 requests模块

    requests模块 Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,reques ...

  8. 爬虫--requests模块高级(代理和cookie操作)

    代理和cookie操作 一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests ...

  9. 爬虫--requests模块学习

    requests模块 - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能 ...

随机推荐

  1. .NET Core 很酷,你不得不知!

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://www.infoq.cn/article/xPTBAR9-oJcVtUjTQ0tK ...

  2. 从 View 的四个构造方法说起

    View 类的四个构造函数 写过自定义 View 的都知道,View 有四个构造函数,一般大家都知道第一个构造方法是简单的在代码中new View 的时候调用的,第二个构造方法使用最广泛,是对应的生成 ...

  3. ionic 删除返回按钮文字,及自定义nav两侧的按钮和title格式

    1.删除返回按钮文字 1)可以在app.js进行配置 .config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) ...

  4. JDBC之PreparedStatement

    JDBC之PreparedStatement 一.java.sql.PreparedStatement接口简介 该接口表示预编译的 SQL 语句的对象. SQL 语句被预编译并存储在 Prepared ...

  5. JAVA 泛型中的通配符 T,E,K,V,?

    前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据 ...

  6. Delphi - 创建text文件并添加数据到文件中

    创建文本文件 代码如下: //创建一个文本文件 procedure CreateTextFile(); var AssignFile(TF,'C:\tmp\1.txt'); ReWrite(TF); ...

  7. 【社群话题分享】当 Bug 引发事故时,是否应该追究责任呢?

    每周三下午的话题活动是又拍云技术社群的优良传统- 大家一起来看看这周都聊了些啥吧- 看看之前大家还聊了些什么,点击下方你感兴趣的话题~ [社群话题分享]是世界上最_语言? [社群话题分享]IDE 技术 ...

  8. 用户数从 0 到亿,我的 K8s 踩坑血泪史

    作者 | 平名 阿里服务端开发技术专家 导读:容器服务 Kubernetes 是目前炙手可热的云原生基础设施,作者过去一年上线了一个用户数极速增长的应用:该应用一个月内日活用户从零至四千万,用户数从零 ...

  9. 2019nc#3

    题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A Graph Games 点击查看 进入讨论 18/292 未通过 B Crazy Binary String 点击查看 1107/3615 ...

  10. CF1009B Minimum Ternary String 思维

    Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input standa ...