pythonrequests跳转
A. 如何用python requests 爬取网页所有文字
您可以用requests库的get方法,以请求的网址为参数,获取网页所有html代码,再访问结果是text属性即可。
B. Python爬虫笔记(二)requests模块get,post,代理
import requests
base_url = 'https://www..com'
response = requests.get(base_url)
url=请求url,
headers =请求头字典,
params = 请求参数字典。
timeout = 超时时长,
)---->response对象
服务器响应包含:状态行(协议,状态码)、响应头,空行,响应正文
字符串格式:response.text
bytes类型:response.content
response.headers['cookie']
response.text获取到的字符串类型的响应正文,
其实是通过下面的步骤获取的:
response.text = response.content.decode(response.encoding)
产生的原因:编码和解码的编码格式不一致造成的。
str.encode('编码')---将字符串按指定编码解码成bytes类型
bytes.decode('编码')---将bytes类型按指定编码编码成字符串。
a、response.content.decode('页面正确的编码格式')
<meta http-equiv="content-type" content="text/html;charset=utf-8">
b、找到正确的编码,设置到response.encoding中
response.encoding = 正确的编码
response.text--->正确的页面内容。
a、没有请求参数的情况下,只需要确定url和headers字典。
b、get请求是有请求参数。
在chrome浏览器中,下面找query_string_params,
将里面的参数封装到params字典中。
c、分页主要是查看每页中,请求参数页码字段的变化,
找到变化规律,用for循环就可以做到分页。
requests.post(
url=请求url,
headers = 请求头字典,
data=请求数据字典
timeout=超时时长
)---response对象
post请求一般返回数据都是json数据。
(1)response.json()--->json字符串所对应的python的list或者dict
(2)用 json 模块。
json.loads(json_str)---->json_data(python的list或者dict)
json.mps(json_data)--->json_str
post请求能否成功,关键看**请求参数**。
如何查找是哪个请求参数在影响数据获取?
--->通过对比,找到变化的参数。
变化参数如何找到参数的生成方式,就是解决这个ajax请求数据获取的途径。
**寻找的办法**有以下几种:
(1)写死在页面。
(2)写在js中。
(3)请求参数是在之前的一条ajax请求的数据里面提前获取好的。
代理形象的说,他是网络信息中转站。
实际上就是在本机和服务器之间架了一座桥。
a、突破自身ip访问现实,可以访问一些平时访问不到网站。
b、访问一些单位或者团体的资源。
c、提高访问速度。代理的服务器主要作用就是中转,
所以一般代理服务里面都是用内存来进行数据存储的。
d、隐藏ip。
ftp代理服务器---21,2121
HTTP代理服务器---80,8080
SSL/TLS代理:主要用访问加密网站。端口:443
telnet代理 :主要用telnet远程控制,端口一般为23
高度匿名代理:数据包会原封不动转化,在服务段看来,就好像一个普通用户在访问,做到完全隐藏ip。
普通匿名代理:数据包会做一些改动,服务器有可能找到原ip。
透明代理:不但改动数据,还会告诉服务,是谁访问的。
间谍代理:指组织或者个人用于记录用户传输数据,然后进行研究,监控等目的的代理。
proxies = {
'代理服务器的类型':'代理ip'
}
response = requests.get(proxies = proxies)
代理服务器的类型:http,https,ftp
代理ip:http://ip:port
C. python requests库中的post详解
一、post请求及响应详解
返回结果:
大家看,其实通过post发送请求很简单
下面再讲讲返回信息的具体内容
大家看,其实有很多的返回值参数,其实我们实际中能用到的并不多,我下边一一列举出来了
response.json():返回信息的格式是json,应为我们请求的时候是json格式,返回的也是一个json,如果返回报错,应该是开发的接口出错了
response.text:如果response.json,可以使用text调试一下,看看具体的返回内容是什么,这里看到的都是字符串了
response.status_code:返回的http状态码,200是成功,404是未找到接口路径,500是服务器错误,等等
response.url:返回请求时的url地址
response.headers:返回服务器给你的响应header
response.cookies:返回服务器给你的cookies,这是一个多么好的获取cookie的方法啊,
response.content:同response.text是一样的
二、post请求中的其他参数
复制
import requests
res = requests.post(url="url",data="body",timeout=30,verfiy=False)
print(res.json())
url:请求的全路径地址,一定是要完整的路径哦
data:请求的内容,如果是json的格式,最好使用json.mps,反序列化一下,避免格式错误,如果是其他格式,就都是字符串了
timeout:设置超时时间,这样我们在自动化测试和爬虫的时候,当达到了设置的超时时间,我们的程序就退出不会一直等待了,可以做其他操作了
verfiy:如果请求的接口是https协议,这个参数就很好用了,如果设置该参数为True,那么我们的脚本就是要配置CA证书,建议参数值为False,好用又简单
好了,post的请求详解就这些了,欢迎大家点赞留言,我会给大家解答疑问的
D. 利用python的requests库如何获取post后服务器返回的headers信息
1、在用python的requests库时利用post模拟上传数据网站会跳转到另外一个网站在做页面分析时发现。
2、可从服务器返回的响应标头中找到该url请问如何获得post后服务器返回的headers信息。
E. post python requests 怎样处理302跳转
requests默认行为是追踪301/302重定向,已经跳转到了最终的URL,自然没有Location,看requests的手册,作者写了怎么拿到这个跳转记录
F. python requests 常用方法
requests 继承了urllib2的所有特性,比urllib简洁高效
requests所有功能都能通过"requests/api.py"中的方法访问
1、安装:
pip install requests
2、get请求:
封装链接中的参数,请求时用params参数进行传递
url = " http://www..com "
resp = requests.get(url,params=,headers=)
3、post请求:
发送的数据必须放在字典中,通过data参数进行传递
url = " http://www..com "
resp = requests.post(url,data=,headers=)
4、查看响应内容:
print (resp.text ) # resp.text 返回的是Unicode格式的数据
print(resp.json()) # res.json() 返回的是json格式的数据
print(resp.content) # resp.content返回的字节类型数据
print (resp.url) # 查看完整url地址
print (resp.encoding) # 查看响应头部字符编码
print(resp.status_code) # 查看响应码
print(resp.cookies) # 查看返回的cookies
print(resp.r.elapsed) #响应速度,从发送请求到响应到达所需要的时间
5、Cookies
import requests
url = " http://www..com "
resp = requests.get(url)
cookiejar = resp.cookies # 返回cookies对象
cookiedic = requests.utils.dict_from_cookiejar(cookiejar) # 将cookies转为字典
6、Sission
说明
1、发送请求前先创建一个session会话,将请求到的cookies存入session中
2、程序的请求要一直使用session.get/post,以保证cookies在程序中的传递
3、程序的请求如果使用requests.get/post需要在参数中增加headers{"cookie:":"****"},否则请求会报错,因为requests.get/post每次执行都会重新开启一个新的请求,丢失已获取的cookies
例子:登录17小说网拿到书架数据
import requests
session = requests.session() # 创建会话(session),将cookie存入session中
data = {
"loginName": "1 7",
"password": "1 5"
}
url = " https://passport.17k.com/ck/user/login "
resp1 = session.post(url,data=data) # 登录,获取cookies
resp2 = session.get(" https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919 ")
print(resp2.json())
7、防盗链处理
防盗链,本质上是溯源,即本次请求的上一次请求,请求时将referer地址加上即可
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36",
"Referer":" https://www.pearvideo.com/video_1734919 " # 防盗链:溯源,确认当前请求的上一级
}
G. python3.5 urllib.request 怎么禁止301,302跳转
Python code?
class SmartRedirectHandler(urllib2.HTTPRedirectHandler): 1
def http_error_301(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301( 2
self, req, fp, code, msg, headers)
result.status = code 3
return result
def http_error_302(self, req, fp, code, msg, headers): 4
result = urllib2.HTTPRedirectHandler.http_error_302(
self, req, fp, code, msg, headers)
result.status = code
return result
H. python requests库如何处理302重定向
你的意思是希望requests报告302?
r = requests.get(url, allow_redirects=False)
r.status_code
r.headers['Location']