运维初学PythonDay11

补充

read() readlines() 默认值为-1 也可以指定值

requests

请求方式有

get 获取

post 写,增加

delete 删除

put 全量更新

patch 补丁更新

GET 和 POST

通过 requests 发送一个 GET 请求,需要在 URL 里请求的参数可通过 params(参数) 传递

与 GET 不同的是,POST 请求新增了一个可选参数 data,需要通过 POST 请求传递 body 里的数据可以通过 data 传递

requests.get.content(url)

处理文本请求


import requests
#处理文本请求
r = requests.get('https://www.xxx.xx/')
print()
print(r.text)#查看网页内容,因为是文本类型的,采用text查看

处理图片视频请求


import requests
url2='https:xxxxx/xxxx/xx/.jpg'
r2 = requests.get(url2)
r2.content#因为是图片类型的,采用content查看 ,文本也可以
with open('/tmp/aaa.jpg', 'wb') as fobj:  # 将图片数据保存在文件aaa.jpg中
    fobj.write(r2.content)

那就开始爬一些网站的图片吧


import requests,os,re
#下载源代码到本地
def download(url,fname):
    with open(fname,mode="wb") as fw:
        fw.write(requests.get(url).content)
#正则匹配所有图片的url地址
def get_url(fname,re_str):
    result_url=[]
    with open(fname,mode="r") as fr:
        re_obj=re.compile(re_str)
        for i in fr.readlines():
            data=re_obj.search(i)
            if data != None:
                result_url.append(data.group())
    return result_url
#遍历下载
if __name__ == '__main__':
    fname= "/opt/mysina.html"
    re_str="(http|https)://[\w\./-]+\.(jpg|png|jpeg|gif|bmp)"
    if not os.path.exists("/opt/mysina.html"):
        download("https://www.sina.com.cn/","/opt/mysina.html")
    if not os.path.exists("/opt/mypics"):
        os.mkdir("/opt/mypics")
    list_url=get_url(fname,re_str)
    for i in list_url:
        if not os.path.exists("/opt/mypics/"+os.path.basename(i)):
            download(i, "/opt/mypics/"+os.path.basename(i))
        else:
            print("这些文件你都已经有了,在:/opt/mypics/*****去看看")

json

搜索 中国天气网 城市代码查询, 查询城市代码


import requests
url="http://www.weather.com.cn/data/sk/101100801.html"
resp =requests.get(url)
print(resp.encoding)# 查看获取网页数据的字符集  'ISO-8859-1'
resp.encoding="utf8"#设置字符集为utf8
print(resp.encoding)
data=resp.json()# 查看json类型的数据【utf8】
print(data)
print(data["weatherinfo"]["city"])
print(data["weatherinfo"]["temp"])
print(data["weatherinfo"]["cityid"])

跳过反爬

搜索useragnet大全 让穿一个假的外套#通过构造头信息headers=header


import requests
url="https://www.jianshu.com/"
header = {"User-Agent":"Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"}
resp= requests.get(url,headers=header)
print(resp.text)

Pickle

数据持久化

pickle.dump(xxx,fr)存储

pickle.load(fr) 写入


import pickle
#持久化:数据落盘 放到磁盘中
list01=[10,"hehe",True]
# with open("/opt/list.txt",mode="wb") as fw:
#     pickle.dump(list01,fw)

#读取数据
with open("/opt/list.txt",mode="rb") as fr:
    data=pickle.load(fr)
    print(data,type(data))

import pickle,os
#初始化
def init_data():
    if not os.path.exists("/opt/"):
        with open("/opt/user.data",mode="wb") as fw:
            userdb = {}
            pickle.dump(userdb,fw)
#userdb={"zs":"123","ls":"456"}
#注册
def register():
    with open("/opt/user.data",mode="rb") as fr:
        userdb=pickle.load(fr)
    user=input("输入用户名:")
    if user not in userdb.keys():
        passwd = input("输入密码:")
        userdb[user]=passwd
        print("用户添加成功")
        with open("/opt/user.data",mode="wb") as fw:
            pickle.dump(userdb,fw)
    else:
        print("用户名已存在啊请重新输入")
#验证登录
def login():
    with open("/opt/user.data",mode="rb") as fr:
        userdb=pickle.load(fr)
    user = input("输入用户名:")
    passwd= input("输入密码:")
    #if user in userdb.keys() and userdb.get(user) == passwd:
    if (user,passwd) in userdb.items():
        print("用户登录成功")
        register()
    else:
        print("用户登录失败")
#输出用户
def print_user():
    with open("/opt/user.data", mode="rb") as fr:
        userdb = pickle.load(fr)
        print(userdb)
#菜单
def show_menu():
    while 1:
         print("1.登录\n2.注册\n3.打印当前用户有哪些\n4.退出")
         n=input("请输入你选择的事情:")
         if n not in ["1","2","3"]:
             print("按照套路出牌")
         elif n=="1":
             login()
         elif n=="2":
             register()
         elif n == "3":
             print_user()
         else:
             print("bye~!")
             break
if __name__ == '__main__':
    init_data()
    show_menu()

你需要知道这些内容

1 什么是JSON?它的主要作用是什么?

JSON是一种轻量的数据交换格式,易读方便机器解析与生成 主要作用是将数据结构转换为字符串 或者将字符串转为相应的数据类型

2 如下代码所示,requests模块发送请求后,返回的数据可以用哪些方式进行读取?

r.text

r.content

r.json() 读取json格式的数据

3 HTTP的方法用哪些?

  • GET:请求获取Request-URI所标识的资源

  • POST:在Request-URI所标识的资源后附加新的数据

  • OPTIONS:请求与给定路径匹配的HTTP头的值

  • HEAD:请求服务器做好一切发送资源的准备,但是只发送头信息

  • DELETE:请求服务器删除Request-URI所标识的资源

  • PUT:请求服务器存储一个资源,并用Request-URI作为其标识

  • TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断

  • CONNECT:保留将来使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small white poplar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值