Python:requests模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wn0zGbep-1603023348297)(F:\JianShu_material\Python\图片\requests模块\requests模块.png)]

1. 爬虫概述

爬虫是通过编写程序,模拟浏览器上网,让后让其在互联网上抓取数据的过程

爬虫的分类

  • 通用爬虫:抓取系统的重要组成部分,抓取的是一整张页面数据
  • 聚焦爬虫:是建立在通用爬虫的基础之上,抓取的是页面中特定的局部内容
  • 增量式爬虫:检测网站中数据更新的情况,只会抓取网站中最新更新出来的数据

反爬机制:门户网站,可以通过制定相应的策略或技术手段,防止爬虫程序进行网站数据的爬取

反反爬策略:爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而获取门户网站信息

robots.txt协议:君子协议,规定了网站中哪些数据可以被爬虫爬取,哪些数据不可以被爬取

http协议:是服务器和客户端进行数据交互的一种形式,https是安全的超文本传输协议,加密方式为证书密匙加密

常用请求头信息

  • User-Agent:请求载体的身份标识
  • Connection:请求完毕后,是断开连接还是保持连接

常用响应头信息

  • Content-Type:服务器响应回客户端的数据类型

2. requests模块

2.1 requests模块概述

requests模块是python中一款基于网络请求的模块,功能强大,简单便捷,效率极高

requests的作用是模拟浏览器发请求

如何使用:(requests模块的编码流程)

  1. 请求url(网址)
  2. 发起请求
  3. 获取响应数据
  4. 持久化存储

2.2 使用方法

案例一:爬取搜狗首页的页面数据

#需求:爬取搜狗首页的页面数据

import requests

#1.指定url
url = 'https://www.sogou.com/'
#2.发起请求
#get方法会返回一个响应对象
response = requests.get(url=url)
#3.获取响应数据,.text返回的是字符串形式的响应数据
page_text = response.text
print(page_text)
#4.持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

print('爬取数据结束')

案例二:网页采集器

UA:User-Agent(请求载体的身份标识)

UA检测:门户网站的服务器会检测对应请求的载体身份标识、如果检测到请求的载体身份标识为某一款浏览,说明该请求是一个正常的请求。但是,如果检测到请求的载体身份标识不是某一款浏览器的,则表示该请求为不正常的请求(爬虫),则服务器端成很有可能拒绝该次请求。

UA伪装:为了应对UA检测,要让爬虫对应的请求载体身份标识伪装成某一款浏览器。

#案例二:网页采集器

import requests

#UA伪装:将对应的User-Agent封装到一个字典里
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}

url = 'https://www.baidu.com/'

#处理url携带的参数:封装到字典里
kw = input('enter a word:')
param = {'query':kw}

#对指定的url发起请求对应的url是携带参数的,并在请求过程中处理参数
#url是指定网页位置
#params是指定搜索关键值
#headers是UA伪装
response = requests.get(url=url,params=param,headers=header)

page_text = response.text
fileName = kw + '.html'
with open(fileName,'w',encoding='utf-8') as fp:
    fp.write(page_text)

print(fileName,'保存成功!!!')

案例三:破解百度翻译

#案例三:破解百度翻译
import requests
import json

#指定url
post_url = 'https://fanyi.baidu.com/langdetect'

#进行UA伪装
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}

#post请求参数处理(同get请求一致)
word = input('enter a word:')
data = {'kw':word}

#请求发送
#post是请求数据,get是发送数据
response = requests.post(url=post_url,data=data,headers=headers)

#获取响应数据(json方法返回的是对象,如果确认响应数据是json类型,才可以使用json)
dic_obj = response.json()

#持久化存储
fileName = word + '.json'
fp = open(fileName,'w',encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)

print('over!!!')

案例四:爬取豆瓣电影数据

#*案例三四:爬取豆瓣电影数据
import requests
import json

url = 'https://movie.douban.com/j/subject_abstract?subject_id=1292720'
param = {
    'type':'movie',
    'tag':'经典',
    'sort':'recommend',
    'page_limit':'0', #从库中第几部电影中去取
    'page_start':'20', #一次取出的个数
}

#进行UA伪装
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}

response = requests.get(url=url,params=param,headers=headers)

list_data = response.json()
fp = open('./douban.json','w',encoding='utf-8')
json.dump(list_data,fp=fp,ensure_ascii=False)

print('over!!!')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的requests库返回的是JSON格式的数据。JSON是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。在Python中,可以使用requests库发送HTTP请求,并将响应的数据解析为JSON格式。使用requests库发送HTTP请求时,可以指定请求的方法、URL、请求头、请求体等信息,然后获取响应的数据。响应的数据可以是JSON格式的字符串,也可以是Python中的字典或列表对象。要将JSON格式的字符串解析为Python中的对象,可以使用json模块中的loads()函数。例如,可以使用以下代码将JSON格式的字符串解析为Python中的字典对象: import requests import json response = requests.get('https://api.github.com/users/octocat') data = json.loads(response.text) print(data['login']) # 输出octocat ### 回答2: Python中的requests库是一个常用的HTTP客户端库,用于向web服务器发送请求并获取响应。requests库返回的响应可以是各种格式的数据,如HTML、JSON、XML等。在本文中,我们将主要关注requests返回的JSON数据。 JSON(JavaScript Object Notation)是一种轻量级数据交换格式,广泛用于web应用程序之间的数据交换。JSON数据使用键值对(key-value pairs)表示,其中的值可以是数字、字符串、数组、对象或null。与其他数据格式相比,JSON数据具有易读、易于解析、易于生成和易于编写的特点。 requests库返回的JSON数据可以通过response对象的json()方法获取。json()方法将JSON数据转换为Python字典(dict)对象,以方便我们通过键值对来访问数据。例如,在以下示例中,我们使用requests库向GitHub API发送请求并获取响应。然后,我们通过json()方法将响应的JSON数据解析为Python字典,以方便我们访问其中的数据: ``` import requests # 向GitHub API发送请求,获取最受欢迎的Python项目 response = requests.get('https://api.github.com/search/repositories', params={'q': 'language:python', 'sort': 'stars', 'order': 'desc'}) # 将响应的JSON数据解析为Python字典 data = response.json() # 访问字典中的数据 print('最受欢迎的Python项目是:', data['items'][0]['name']) print('它的描述是:', data['items'][0]['description']) ``` 通过上述代码,我们可以发现,requests返回的JSON数据与Python字典非常相似,因为我们可以像访问字典一样访问JSON数据中的键和值。但需要注意的是,如果数据格式错误或不是有效的JSON数据,调用json方法将会导致代码抛出异常。因此,在处理JSON数据之前,请确保数据是有效和可靠的。 总之,requests库返回的JSON数据是常见的数据格式之一,而Python的字典对象提供了灵活和方便的访问方式,可以使我们更容易理解和管理从网络获得的数据。在实际开发中,请求数据并解析JSON可以大大提高效率,并使我们在构建web应用程序时更加灵活和易于维护。 ### 回答3: Pythonrequests是一个非常流行的HTTP库,可以方便地发送HTTP请求和获取响应。其中返回的数据类型有多种,包括字符串、字节流、JSON等等。而本文主要讨论requests返回的JSON数据。 JSON是JavaScript对象表示法的缩写,它是一种轻量级的数据交换格式,易于阅读和编写,并且可以被各种语言支持。JSON格式看起来类似于字典,由键值对组成。在Python中,可以使用json模块将JSON数据转化为Python对象。 当我们使用requests发送请求并获得响应之后,可以通过response对象的json()方法将返回的JSON数据转换为Python对象。因此在处理API请求时,使用requests库发送请求并解析JSON数据,是非常常见的操作。 例如,一般API请求的返回数据格式类似于以下格式: ```json { "status_code": 200, "message": "success", "data": { "name": "John", "age": 28, "hobby": ["reading", "swimming"] } } ``` 使用Python中的requests库发送请求: ```python import requests response = requests.get('https://example.com/api/v1/user/1') json_data = response.json() print(json_data) ``` 转换后的Python对象: ```python { "status_code": 200, "message": "success", "data": { "name": "John", "age": 28, "hobby": ["reading", "swimming"] } } ``` 我们可以通过Python对象的方式来处理API请求的返回数据。 需要注意的是,当requests访问的API返回的不是JSON数据时,调用json()方法会抛出 ValueError 异常,因此在进行json格式转换时需要进行处理。 总而言之,requests库提供了非常方便的接口,可以轻松地发送请求并获得响应,转换为JSON格式的数据,进而得到Python对象,使数据的处理和操作变得非常简单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值