爬虫基础02 request

        requests模块是一款基于网络请求的python三方库,具有功能强大,简单便捷,效率较高的特点。其功能在于模拟浏览器发请求。

1、requests基本功能

import requests
#1、准备请求地址
url = '<https://cd.zu.ke.com/zufang>'
#2、发送请求
#requests.get(url)   -对指定地址发送请求,得到服务器返回的数据响应
response = requests.get(url)
#3、获取请求结果
result = response.text
print(result)

2、requests详解

        安装:pip install requests -i https://pypi.doubanio.com/simple

2.1 爬虫实现步骤

  • 指定url

  • 基于requests模块发送请求

  • 获取服务器响应数据

  • 持久化存储

import requests

# 1、准备请求地址

url = '<https://cd.zu.ke.com/zufang>'

# 2、发送请求

response = requests.get(url)
print(response)

# 3、获取响应内容

# 1)获取响应头(响应头包含了返回数据的基本信息)
print(response.headers)

# 2)获取状态码
print(response.status_code)
if response.status_code == 200:
    pass
else:
    pass

# 3)修改编码方式    -如果请求乱码就修改
# 注意:乱码的时候修改编码方式,必须在获取请求结果之前
response.encoding = 'utf-8'

# 4)获取请求结果
# a、响应对象.text    -返回字符串类请求结果(请求地址是网页地址)
print(response.text)
# b、响应对象.content    -返回二进制类型(bytes)的请求结果(请求地址是文件地址、图片、视频、音频)
# c、响应对象.json()      -返回值根据json数据格式的不同可能不一样(针对请求地址是json数据接口)

2.3 常用属性/方法

请求属性/方法

属性/方法描述
requests.get(url,[params],[headers])get请求函数,实现get请求
requests.post(url,[data],[headers])post请求函数,实现post请求

响应属性/方法

属性描述
response.encoding编码方式
response.textUnicode型数据
response.content字节型数据(二进制)
status_code状态码
response.cookiescookies值
response.headers响应头信息
response.request.headers请求头信息
方法描述
response.json()获取json数据
import requests

# 1、确定抓取网站网址
url = "https://www.baidu.com/"
# 2、通过requests模块发送请求
response = requests.get(url)
response.encoding = 'utf-8'

# 3、获取服务器响应
print(response.text) # 响应文本
print(response.status_code)  # 200
print(response.url)  # https://www.baidu.com/
print(response.encoding)  # utf-8
print(response.cookies)  # <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
print(response.headers)  # 响应头信息
print(response.headers.get("Content-Type"))
print(response.request.headers)  # 请求头信息
print(response.request.headers.get("User-Agent"))

3、文件下载

#1、准备下载地址
import requests

url = '<https://img2.baidu.com/it/u=267632856,3740526320&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800>'

#2、发送请求
response = requests.get(url)

#3、获取请求结果
result = response.content

#将图片写入到文件中
with open('files/艾斯.jpeg','wb') as f:
    f.write(result)

4、数据接口

#1、准备数据接口
import requests

url = '<https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js>'

response = requests.get(url)
#获取请求结果
result = response.json()
for x in result['hero']:
    print(x['name'])

4.1 什么是json

json就是一种通用数据格式,主要用于客户端和服务器之间进行文本数据的传输

4.2 json支持的数据类型

  • 数字类型:相当于python中的int+float,表示的时候直接写,也可以科学计数法
  • 字符串:只能用双引号
  • 布尔:true 真,false 假 都是小写
  • 数组:相当于python的列表,[数据1,数据2,。。。]
  • 字典:json字典的键只能是字符串

4.3 python与json数据之间的转换

  • json转python

    python中json模块提供了各种个json相关功能的函数

from json import loads,dumps
'''
loads函数
json    python
数字    int、float
字符串   str(双引号会变成单引号)
布尔      bool;true -> True、false -> False
数组      list
字典      dict
'''
# loads(json格式的字符串)   -  将json数据转换成对应的Python数据
# json格式的字符串 - 字符串内容是json数据的字符串
result = loads('100')           # 100
print(type(result))

result = loads('"abc"')         # 'abc'
print(type(result))

result = loads('true')          # True
print(result)

result = loads('[100, "abc", 200]')     # [100, 'abc', 200]
print(result)

result = loads('{"10": 20}')            # {'10': 20}
print(result)
  • python转json
# 2)python转json   -  dumps函数
"""
python            json
int、float         数字
str                字符串; 单引号字符串会变成双引号
bool               True -> true、False -> false
list、tuple        数组
dict               字典
"""
# dumps(python数据)   -   将python数据转换成对应的json格式字符串
dumps(100)          # '100'
dumps(True)         # 'true'
dumps('abc')        # '"abc"'
result = dumps({'name': '小明', 'age': 18, 'is_m': False, 10: 20})      # '{"name": "小明", "age": 18, "is_m": false, "10": 20}'
print(result, type(result))

5. request实例

        按请求方式的不同,requests抓取数据请求方式分为:get请求、post请求、异步请求、接口API请求等。

5.1 搜狗关键字查询(get)

# 导入request模块
import requests

# 1、确定抓取网站网址
url = "https://www.sogou.com/web?query=大数据"

header= {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}

# 2、通过responses模块发送请求
response = requests.get(url, headers=header)
response.encoding = "utf-8"

# 3、获取服务器响应
page_text = response.text
print(page_text)

5.2  百度翻译(post|异步)

import requests

# 1、确定抓取网站网址
url = "https://fanyi.baidu.com/sug"
data = {
    "kw": "dog"
}
header = {
    "User-Agent": "Mozilla/5.c0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}

# 2、通过responses模块发送请求
response = requests.get(url, data=data, headers=header)
response.encoding = "utf-8"

# 3、获取服务器响应
page_json = response.json()
print(page_json)

5.3 API接口

API接口访问

接口名称接口地址
免费API免费API - 免费提供API服务
木小果APIhttps://api.muxiaoguo.cn/
韩小韩API接口站韩小韩API接口站 - 免费API数据接口调用服务平台
ALAPIALAPI
Sky▪APISky▪API - 专注免费稳定的api
import requests

url = "https://jsonplaceholder.typicode.com/posts"
resp = requests.get(url)
print(resp.json())  # 接口通常返回json格式数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值