一、简介

什么是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)

  

最新文章

  1. angular2系列教程(二)模板语法
  2. (转载) 利用国内的镜像,加速PIP下载
  3. ElasticSearch-5.0.0安装中文分词插件IK
  4. NGUI 灰化按钮或图标
  5. Maven-008-Nexus 私服部署发布报错 Failed to deploy artifacts: Failed to transfer file: ... Return code is: 4XX, ReasonPhrase: ... 解决方案
  6. asp.net页面跳转sessionid会变
  7. linux系统tomcat启动正常访问不到主页面
  8. docker-compose常用命令
  9. 在window平台搭建Qt开发环境(使用VS2008 IDE)
  10. Linux---vi编辑器必会操作
  11. bzoj 2209: [Jsoi2011]括号序列 splay
  12. 『重构--改善既有代码的设计』读书笔记----Self Encapsulate Field
  13. zznu 1052 前n项和
  14. iOS随机数-备
  15. 关于SubclassWindow()和SubclassDlgItem
  16. IOS设备设计完整指南(转载)
  17. JavaScript中的闭包理解
  18. Linux系列教程(十二)——Linux软件包管理之yum在线管理
  19. eclipse中注释的代码依然会执行的解决方法
  20. 一个磁盘I/O故障导致的AlwaysOn FailOver 过程梳理和分析

热门文章

  1. maven的单元测试中没有
  2. leetcode32
  3. leetcode581
  4. 第二篇*1、Python基本数据类型
  5. MFC笔记7
  6. eclipse修改工作目录颜色
  7. netty(六) websocket开发应用
  8. Python基础-python基本语法(二)
  9. swift - UIButton按钮有图片是点击高亮 有灰色动画
  10. php redis pipeline用法