python requests【1】处理url模块(python是什么意思)

网友投稿 619 2022-08-31


python requests【1】处理url模块(python是什么意思)

文章目录

​​1. 简介​​​​2. 安装​​​​3. 方法​​

​​3.1 发送带参数的get请求​​​​3.2 发送带数据的post请求​​​​3.3 post也可以用于上传文件​​​​3.4 设置与查看请求头(headers)​​​​3.5 代理Proxy​​

​​3.6 保存cookies​​

1. 简介

requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?

2. 安装

pip install requests

3. 方法

import requests HTTP请求:GET、POST、PUT、DELETE、HEAD、OPTIONS

requests.get("data = {'key':'value'})requests.put("data = {'key':'value'})requests.delete("为URL传递参数 requests模块使用params关键字参数,以一个字典的形式来提供参数。>>> payload = {'key1':'value','key2':'value2'}>>> res = requests.get("res.urlu'r = requests.get(' # 发送请求>>> r.status_code # 返回码 200>>> r.headers['content-type'] # 返回头部信息'text/html; charset=utf8'>>> r.encoding # 编码信息'utf-8'>>> r.text #内容部分(PS,由于编码问题,建议这里使用r.content)u'\n...>>> res.json()>>> res.raw

response.text和response.content的区别在于:

response.text是解过码的字符串(比如html代码)。当requests发送请求到一个网页时,requests库会推测目标网页的编码,并对其解码,转为字符串(str)。这种方法比较容易出现乱码。response.content是未解码的二进制格式(bytes),不仅支持文本内容,还适用于二进制文件内容如图片和音乐等。如果需要把文本内容转化为字符串,一般使用response.content.decode(‘utf-8’)方法即可。

3.1 发送带参数的get请求

import requestsparams = { "wd": "python", "pn": 10,}response = requests.get('params=params)print(response.url)print(response.text)

3.2 发送带数据的post请求

import requestspost_data = {'username': 'value1', 'password': 'value2'}response = requests.post("data=post_data)response.raise_for_status()

3.3 post也可以用于上传文件

>>> import requests>>> url = 'files = {'file': open('report.xls', 'rb')}>>> r = requests.post(url, files=files)

3.4 设置与查看请求头(headers)

很多网站都有反爬机制,如果一个请求不携带请求头headers, 很可能被禁止访问。我们可以按如下方式设置请求头。你也可以通过打印response.headers查看当前请求头。

import requestsheaders = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/" "537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}response1 =requests.get("headers=headers)response2 =requests.post("data={"key": "value"}, headers=headers)print(response1.headers)print(response1.headers['Content-Type'])print(response2.text)

3.5 代理Proxy

有的网站反爬机制会限制单位时间内同一IP的请求次数,这时我们可以通过设置IP proxy代理来应对这个反爬机制。requests里设置proxy也非常简单,如下面代码所示。

import requestsproxies = { "" ""proxies=proxies)

3.6 保存cookies

cookies = requests.cookies.RequestsCookieJar()def login(endpointip): endpoint = "+ endpointip + ":8080/upcdb_manager/v1.0/login" header = {} header['Content-Type'] = "application/json" payload = { "loginName": username, "password": password } response = requests.request("POST", endpoint, data=json.dumps(payload),headers=header) return response.cookiesif __name__ == '__main__': cookies = login('192.168.1.19') url = 'baidu.com/xxx' r = requests.get(url,cookies=cookies)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《python 爬虫开发与实战》HTTP标准详解(python和java哪个更值得学)
下一篇:python configParser配置文件模块(python代码大全)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~