建网站 可以看到访客吗,昆山建设招标信息网站,北京海淀区有哪些企业,地产行业网站建设图片数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新#xff1a;https://blog.csdn.net/grd_java/article/details/140574349 文章目录 一、安装和基本使用1. 安装2. 基本使用3. response常用属性 二、get请求三、post请求四、代理 一、安装和基本使用
1.…数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新https://blog.csdn.net/grd_java/article/details/140574349 文章目录 一、安装和基本使用1. 安装2. 基本使用3. response常用属性 二、get请求三、post请求四、代理 一、安装和基本使用
1. 安装 和解析库urllib几乎一摸一样但是有些业务场景用request更加方便 最好对比utllib学习https://blog.csdn.net/grd_java/article/details/140589367 官方文档https://requests.readthedocs.io/projects/cn/zh-cn/latest/ 企业中用的最多的就是requests底层实现就是urllib在python2和python3中通用方法完全一样简单易用 安装requests 执行命令pip install requests即可安装 代码中导包不报错表示安装成功 2. 基本使用
基本使用
导包(start)
import requests
导包(end)
url http://www.baidu.com
# 通过get方式请求url
response requests.get(url)
# 设置编码格式
response.encoding utf-8
# response对象的类型为Response类型和urllib的HttpResopnse对象是不一样的
print(type(response))
# 以字符串形式返回网页源码
print(response.text)
# 获取响应状态码
print(response.status_code)
# 获取请求的url
print(response.url)
# 获取响应头
print(response.headers)
# 获取响应的字节类型
print(response.content)3. response常用属性
response.text # 响应体 str类型
response.encoding #从HTTP header中猜测的响应内容的编码方式
respones.content #响应体bytes类型
response.status_code #响应状态码
response.request.headers #响应对应的请求头
response.headers #响应头
response.cookies #响应的cookie(经过了set-cookie动作)
response.url #获取访问的url
response.json() #获取ison数据 得到内容为字典(如果接口响应体的格式是ison格式时)
response.ok# 如果status code小于200response.ok返回True。# 如果status code大于200response.ok返回False.response.text和response.content的区别 response.text 类型:str解码类型: requests模块自动根据HTTP 头部对响应的编码作出有根据的推测推测的文本编码如何修改编码方式:response.encoding“gbk/UTF-8” response.content 类型:bytes解码类型:没有指定如何修改编码方式:response.content.deocde(“utf8) 获取网页源码的通用方式: response.content.decode()response.content.decode(“UTF-8”)response.text 以上三种方法从前往后尝试能够100%的解决所有网页解码的问题。所以更推荐使用 response.content.deocde()的方式获取响应的html页面 二、get请求 同样是百度例如百度北京看搜索结果。requests库作为独属于python的是不需要像urllib一样对参数编码的 导包(start)
import requests
导包(end)url http://www.baidu.com/s? # 路径中的可加可不加
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0}
data {wd:北京
}
# def get(url, paramsNone, **kwargs):
# url 请求资源路径
# params 参数
# kwargs 字典
response requests.get(urlurl, paramsdata, headersheaders)
response.encoding utf-8
content response.text
print(content)
# 也可以一行搞定哦
print(response.content.decode(utf-8))可见对比urllib有以下几点不同 参数使用params传递参数无需urlencode编码不需要请求对象的定制请求资源路径url中的可以加也可以不加 把网络上的图片保存到本地 三、post请求 我们使用讲解urllib中的百度翻译的案例看看实现同样的效果和urllib有何区别 post请求不需要编解码请求参数是经典的data不需要请求对象的定制 导包(start)
import requests
导包(end)url https://fanyi.baidu.com/sug
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0}
data {kw:spider
}
# def post(url, dataNone, jsonNone, **kwargs):
# url 请求资源路径
# data 参数对象
# json json对象
# kwargs 字典
# 我们以传输data对象为例传输json同理将data换成json即可
response requests.post(urlurl, datadata, headersheaders)
content response.text
# 因为content返回的不是utf-8编码格式我们看起来比较费劲
# 通过json库将其转为utf-8
import json
obj json.loads(content)
print(obj)四、代理 依然和urllib完全一样的操作 导包(start)
import requests
导包(end)url http://www.baidu.com/s?
headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0}
data {wd:ip
}
# 1. 获取代理handler对象并指定代理ip字典proxies
proxies {http: 218.87.205.38:20433,
}
response requests.get(url url, paramsdata, headersheaders,proxiesproxies)
content response.text
with open(daili.html,w,encodingutf-8) as fp:fp.write(content)