首页 > 其他分享 >爬虫学习02 requests高级用法

爬虫学习02 requests高级用法

时间:2023-07-10 21:33:07浏览次数:48  
标签:02 get 爬虫 video https print requests com

1 requests高级用法

1.0 自动携带cookie 的session对象

# session对象----》已经模拟登录上了一些网站---》单独把cookie 取出来
-res.cookies 是cookiejar对象,里面有get_dict()方法转换成字典
-转成字典 res.cookies.get_dict()
    
# 使用session发送请求,cookie自动携带
session=requests.session()
res = session.post('http://www.aa7a.cn/user.php', data=data, headers=header)
res1 = session.get('http://www.aa7a.cn/') #不需要携带cookie了

1.1 响应Response

# Http的响应,就是res对象,所有http响应的东西都在这个对象中
res = requests.get('http://www.aa7a.cn/')

import requests
respone=requests.get('http://www.jianshu.com')
# respone属性
print(respone.text)  # 响应体转成字符串,默认utf-8,以后打印出来可能乱码
print(respone.content)  # 响应体的bytes格式

print(respone.status_code)  # 响应状态码
print(respone.headers)  # 响应头
print(respone.cookies)  # cookie
print(respone.cookies.get_dict())  # cookie转成字典
print(respone.cookies.items())  # 键值对形式

print(respone.url)  # 请求地址
print(respone.history)  # 访问一个地址,如果重定向了,requests会自动重定向过去,放着重定向之前的地址,列表

print(respone.encoding)  # 网页编码

#关闭:response.close()
from contextlib import closing
with closing(requests.get('xxx',stream=True)) as response:
    for line in response.iter_content():
      # 一点一点取,用来下载图片视频之类
    pass

1.2 下载图片到本地

res = requests.get(
    'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fa5ec79fe-843e-4a60-8033-2f73bbda2fa5%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1691571832&t=c20db6d16f943b4f84502ec5434d1067')

print(res.content)

with open('meinv.png','wb') as f:
    for line in res.iter_content(chunk_size=1024):
      # chunk_size 是指在下载文件时每次读取的字节数
        f.write(line)

1.3 编码问题

直接打印res.text字符串形式---》从网络过来是二进制---》转成字符串涉及到编码---》默认以utf-8---〉现在会自动识别网页编码,自动转成对应的
res.encoding='gbk'  # 手动指定编码
print(res.text)

1.4 解析json

# 返回的数据可能是html,也可能是json(前后端分离项目返回数据json格式)
data={
'cname': '',
'pid': '',
'keyword': '周浦',
'pageIndex': 1,
'pageSize': 10
}

res = requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data=data)
# 也可以写成
header = {'Content-Type':'application/x-www-form-urlencoded'}
res = requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data='cname=&pid=&keyword=%E5%91%A8%E6%B5%A6&pageIndex=1&pageSize=10',headers=header)
print(res.json())

1.5 ssl认证(了解)

# https的请求
# 浏览器访问有证书,代码访问没有证书
res = requests.get('https://cnblogs.com/liuqingzheng/p/16005866.html',verify=False) # verify=False后不验证证书

# 极个别网站必须要验证,需要手动携带证书
import requests
respone=requests.get('https://www.12306.cn',
                     cert=('/path/server.crt',
                           '/path/key')) # 本地得有证书,写路径和密钥
print(respone.status_code)


# https和http的区别
# 参考文章

标签:02,get,爬虫,video,https,print,requests,com
From: https://www.cnblogs.com/10086upup/p/17542388.html

相关文章

  • 7.10 requests的高级使用
    1. 自动携带cookie和session对象header={'Referer':'http://www.aa7a.cn/user.php?&ref=http%3A%2F%2Fwww.aa7a.cn%2F','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/114......
  • 20230710-20230711 数论
    数论被薄纱了/kk授课老师:南京大学-朱富海教授20230710裴蜀定理对于给定不全为零的整数的\(a,b\)一定存在一对整数\(x,y\)满足\(ax+by=gcd(a,b)\)。证明:\(a==0\)\(or\)\(b==0\)显然成立;设\(gcd(a,b)=d\),即求证存在\(x,y\)满足\(ax+by=d\),等式两边同时除......
  • 2023年7月10日 天气:晴
       今天早上起来背了20个英语单词,然后学习了一个小时的Java编程,接下来就看了一会构建之法。最后就是写了一会pta上的作业。  明天打算6点起床然后晨跑半小时,然后编程一小时。再就是出去打会羽毛球。再就是看会英语阅读。......
  • 【DS】P9062 [Ynoi2002] Adaptive Hsearch&Lsearch(区间最近点对)
    ProblemLink给定平面上\(n\)个点,\(Q\)次询问编号在\([l,r]\)内的点的最近点对。\(n,Q\le2.5\times10^5\)。技巧:平面网格化乱搞都是错的。看见欧几里德距离,想到平面网格化。考虑一个平面最近点对的网格化做法:随机点的顺序,按顺序依次考虑,考虑到第\(i\)个点时,设当前最......
  • 2023-7-10 #65 我守着虚构的幻想 那些我珍视的模样
    448QOJ6669Mapa这谁想得到啊??????????????????插出一个模1e9+7下的多项式,保存系数。449CF1456EXOR-ranges感觉挺难的。类似406HDU6358Innocence,我们将每一段拆成\(\log\)个trie上的区间,每一个形如“固定前缀\(S\),长为\(l\)的后缀任选”,并将选择\([l,r]\)内的数改为在这\(\l......
  • 20230710巴蜀暑期集训测试总结
    T1打个不太暴的暴力但是爆了。只对了subtask1,不清楚发生了什么。先建出Kruscal重构树,对每个询问二分答案,判断就用暴力启发式合并T2打了一个\(20pts\)dp。第一步没有想到,每怎么见过这种题。将问题转化为满足\(\foralli,x_i\leA_i,x_i\leB_i\)的序列\(x\)个数。枚......
  • 2023-07-10:Kafka如何做到消息不丢失?
    2023-07-10:Kafka如何做到消息不丢失?答案2023-07-10:Kafka采用多种机制来确保消息的不丢失,其中包括副本机制、ISR(In-SyncReplicas)机制以及ACK机制等。1.副本机制Kafka通过副本机制来确保消息不会丢失。在Kafka中,每个分区都可以配置多个副本,每个副本保存分区的完整拷贝。当一个副本宕......
  • [ICDE 2022]How Learning Can Help Complex Cyclic Join Decomposition
    [ICDE2022]HowLearningCanHelpComplexCyclicJoinDecomposition总结主要贡献是把子图匹配策略的cost的判断改为了GNN实现的预测(写得挺模棱两可的)动机解决子图匹配的一个重要问题是解决复杂循环连接查询。文章除了在工程方面提供了GUI,主要的贡献是设计了合理的框架,使用A......
  • 每日总结2023年7月10日
    今日学习:SQL注入:是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入的数据中注入非法的SQL语句段或命令,恶意攻击数据库。例子如下:计算机网络:七层模型:物理层(功能:传输二进制,设备:中继器、集线器)、数据链路层(功能:传输以帧为单位的信息,设备:网桥、交换机、网卡,协议:PPTP、L......
  • C++程序设计综合实验任选题目[2023-07-10]
    C++程序设计综合实验任选题目[2023-07-10]程序设计综合实验任选题目简单题目题目1模拟ATM机存取款管理系统设计1、问题描述模拟银行的自动取款及使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。2、功能要求(1)卡号、密码输入最多......