一、简介

什么是requests模块:

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

为什么要使用requests模块

  • 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:

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

      二、使用

安装:

  • pip install requests

requests模块的使用流程

  • - 指定url
  • - 发起请求
  • - 获得响应数据
  • - 持久化存储

            案例:

        1、爬取搜狗搜索后的响应页面

import requests

url = 'https://www.sogou.com/web'

# 处理参数
wd = input("enter a word: ")
param = {
'query':wd
} # UA伪装
# User-Agent 请求头信息。请求载体的身份标识
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.12 Safari/537.36'
} # 发起请求
response = requests.get(url,params=param,headers=headers) # 获取响应数据
page_text = response.content # 持久化存储
fileName = wd + ".html"
with open(fileName, 'wb') as f:
f.write(page_text) print(f"{wd}下载成功")

  在爬取并存储图片时urllib模块比较方便

# 使用urllib模块爬取图片
from urllib import request url = "https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=081aba3563224f4a5799741531ccf76f/c83d70cf3bc79f3d423d2823b4a1cd11738b29c1.jpg"
request.urlretrieve(url=url, filename='ycy.jpg')

  

2、用requests模块发起post请求获取百度翻译后的结果

import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.12 Safari/537.36'
}
url = 'https://fanyi.baidu.com/sug' # ajax请求
wd = input("enter a english word: ") # 参数的处理
data = {
"kw": wd
} # 发送post请求
response = requests.post(url=url,data=data,headers=headers) # 如果确定返回的是json格式的数据,就可以直接.json拿到json对象
json_data = response.json()
print(json_data)
print(type(response.text))

  

3、肯德基门店查询

import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.12 Safari/537.36'
}
url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"
wd = input('请输入查询地点:') data = {
'cname': '',
'pid': '',
'keyword': wd,
'pageIndex': '1',
'pageSize': '100',
}
json_data = requests.post(url=url, data=data, headers=headers).json()
print(json_data)

  

4、爬取化妆品生产许可信息管理系统服务平台http://125.35.6.84:81/xk/,每个公司详情页的数据。

需求分析: 指定页面的公司,该公司的详情页数据

# 域名:http://125.35.6.84:81/xk/
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.12 Safari/537.36'
}
# 首页url
url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
id_list = []
start_page= int(input('起始页:'))
end_page= int(input('结束页:'))
for i in range(start_page,end_page+1):
data = {
'on': 'true',
'page': str(i),
'pageSize': '15',
'productName':'' ,
'conditionType': '1',
'applyname': '',
'applysn': '',
}
json_data = requests.post(url=url,data=data,headers=headers).json()
# print(json_data)
for item in json_data['list']:
id_list.append(item["ID"]) # 详情页url
url2 = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
for id_item in id_list:
data_id = {
'id': id_item
}
json_data2 = requests.post(url=url2,data=data_id,headers=headers).json()
print(json_data2)

  

requests应用的更多相关文章

  1. requests的content与text导致lxml的解析问题

    title: requests的content与text导致lxml的解析问题 date: 2015-04-29 22:49:31 categories: 经验 tags: [Python,lxml, ...

  2. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  3. Python爬虫小白入门(二)requests库

    一.前言 为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据.网络上的模块.库.包指的都是同一种东西,所以后文中可能会在不同地 ...

  4. 使用beautifulsoup与requests爬取数据

    1.安装需要的库 bs4 beautifulSoup  requests lxml如果使用mongodb存取数据,安装一下pymongo插件 2.常见问题 1> lxml安装问题 如果遇到lxm ...

  5. python爬虫学习(6) —— 神器 Requests

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...

  6. ImportError: No module named 'requests'

    补充说明: 当前环境是在windows环境下 python版本是:python 3.4. 刚开始学习python,一边看书一边论坛里阅读感兴趣的代码, http://www.oschina.net/c ...

  7. Python-第三方库requests详解

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  8. Requests 乱码

    当使用Requests请求网页时,出现下面图片中的一些乱码,我就一脸蒙逼. 程序是这样的. def getLinks(articleUrl): headers = { "Uset-Agent ...

  9. 爬虫requests模块 2

    会话对象¶ 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能.所 ...

  10. 爬虫requests模块 1

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

随机推荐

  1. Docekr 挂在卷之后访问目录时异常 cannot open directory '.': Permission denied 的解决办法

    1,原因,原因是CentOS7 中的安全模块 selinux 把权限禁掉了 2,解决办法如下 2.1,运行容器是加参数在 --privileged=true   (个人认为这是最佳方式,推荐使用) 如 ...

  2. JAVA Maven 安装 jar 包到本地仓库,以 Oracle11g 的访问包 为例

    maven 作为 java 的首选包管理工具,使我们在创建和维护项目的时候变得十分简单,但是 maven 仓库并不是拥有的一切 jar 包的, 很多 jar 包由于收费或者版权什么的其他原因,并不存在 ...

  3. django 验证码实现

    django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...

  4. ABAP-表中数据的横向累加

    GLT0 等表中数据的横向累加 ——塞依SAP培训   在 ABAP 的 GLT0.FAGLFLEXT 等余额表中,用诸如 TSL01.TSL02 …… TSL16 等字段记录了 16 个期间的发生额 ...

  5. [C语言]进阶|图形库

    ---------------------------------------------------------------------- // main.c // Created by weich ...

  6. cdnbest区域自定义配置里添加防xss攻击配置

    把下面代码复制进去即可: <!--#start 300 --><config> <response action='allow' > <table name= ...

  7. 使用::befor和::after伪元素在网站中添加图标

    css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:link,:active,:target,:not(),:focus. 常见伪元素——::first-letter,: ...

  8. wdk驱动开发的特点

    本文介绍WDK开发的一些特点.与应用层开发的差异性,不能混为一谈. 一.函数的调用点 在内核编程中,一个函数往往有多个调用点,而应用层中一个函数一般只在main里面有调用点.内核函数调用点一般在: 1 ...

  9. idea编辑项目出现【Information:java: javacTask: 源发行版 7 需要目标发行版 1.7】

    在编译项目时候出现问题: Information:java: javacTask: 源发行版 7 需要目标发行版 1.7 解决方案:按着图片操作,这几个地方设置的一样就可以了

  10. 机器学习性能指标(ROC、AUC、召回率)

    混淆矩阵 构造一个高正确率或高召回率的分类器比较容易,但很难保证二者同时成立 ROC 横轴:FPR(假正样本率)=FP/(FP+TN) 即,所有负样本中被分错的比例 纵轴:TPR(真正样本率)=TP/ ...