【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)

news2024/12/23 5:41:30

导语

Hello,大家好呀!我是木木子吖~

一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。

听说关注我的人会一夜暴富发大财哦~

(哇哇哇 这真的爱😍😍)

 生活中总有些东西值得爬一爬

爬虫可以从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址。

然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

难道爬虫真的只是这样么?

小编特地询问很多网友Python有什么用,大家给出答案也是五花八门。

@小顾

之前在北京买房,谁想房价开始疯长,链家的房价等数据分析只给了一小部分,远远不能满足

自己的需求。于是晚上花了几个小时的时间写了个爬虫,爬下了北京所有的小区信息及北京所

有小区的所有历史成交记录。

@小梦

说个简单实用的例子吧。昨晚突然发现我在某培训网站的的会员马上就要过期了,于是赶紧写

了个爬虫,把没看完的教学视频全下载下来了……

@小木

非计算机系。所以我做的比起其他人来说要简单的多,但是却解决了一些很实用的问题,也让

我认识到各行各业的人都需要学一点编程。

我一个同学做数学建模,需要57个城市两两之间的距离。他们本来想在百度查,可是

57*56/2=1596,也就是说他们光查数据就要百度1596次。刚好我那个时候接触了一点爬虫,

就找到一个可以查询距离的网站,大概写了几十行代码,两分钟就解决问题了。

今天我们就来跟大家一起来看看爬虫的魅力所在——然后给大家来点儿直观的案例代码啦🎉

正文

世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等

提供重要的数据源。

一、什么是爬虫?

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),

是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还

有蚂蚁、自动索引、模拟程序或者蠕虫。

啊哈?

这不就如当年学霸讲解题目,跳步无数,然后留下一句“不就是这样推嘛?”

让一众小白菜鸟一脸懵逼。。。那到底什么是爬虫呢?

总而言之,

利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息。



对于小白来说,

可能会认为爬虫是一件非常复杂、技术门槛很高的事情。比如有的人认为学爬虫必须精通 Python,

然后哼哧哼哧系统学习 Python 的每个知识点,很久之后发现仍然爬不了数据;

有的人则认为先要掌握网页的知识,遂开始 HTML\CSS,结果入了前端的坑,瘁……

但对于初学者来说,只要掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现。



这时候,

你需要一个具体的明确的对象,要爬取哪个网站的哪些数据,达到什么量级。

比如:

天猫商城的商品信息,链家网的租房信息,雪球网的证券投资信息。

专家们说:

所有网站皆可爬。既然这样,可以先定一个小目标:(有真正的实操项目是最好的学习方式)

例如:

我要爬整个豆瓣!我要爬整个草榴社区!我要爬知乎爬知乎各种妹子的联系方式!

接着,就可以开始欢快的学习爬虫啦~先来了解一下基本的流程:​

二、爬虫的基本流程

1)详细步骤

发起请求

使用http库向目标站点发起请求,即发送一个Request,Request包含:请求头、请求体等。

获取响应内容

如果服务器能正常响应,则会得到一个Response,Response包含:html,json,图片,视频

等。

解析内容

解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等。
解析json数据:json模块;解析二进制数据:以b的方式写入文件。

保存数据

数据库;文件。

四不四很简单?一二三四五,你以为你可以上山打老虎了吗?你还是太天真啊,少年。

小编有话说:

大部分爬虫都是从 发送请求——获得页面——解析页面——下载内容——储存内容 这样的流

程来进行。虽说网站不同,但是原理都类似,只是用的工具不同。

所以,今天等下直接实战演示,带你爬n个小爬虫案例之后,你的爬虫思路就不在话下啦🎈

三、案例实战

今天的案例分享会挑选几个咯!之后大家还喜欢爬虫的内容的话我就继续分享,不喜欢的话我

只能给大家分享其他的内容了🤡🤡

运行环境:

小编使用的环境:Python3、Pycharm社区版,第三方库下面有安装教程↓ 自带的不用安装。

 模块安装:pip install -i https://pypi.douban.com/simple/+模块名 

1)🎊疫情最新消息!爬取疫情最新数据并且保存在excel中并数据可视化,实战分享!

爬虫代码:

"""
import requests     # 发送请求 第三方模块(安装)
import csv

# 表格的表头
with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['name', 'confirmAdd', 'confirm', 'dead', 'heal', 'nowConfirm', 'nowConfirmCompare'])
# 赋值操作  x = 1, y = 2
url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'
# 1. 发送请求
response = requests.post(url)
# <Response [200]>: 请求成功
# json是一种前后端数据交互的格式
# json_data: Python里面字典类型数据
# 2. 获取数据
json_data = response.json()
# json 结构化数据
# 非结构化数据 网页源代码 没有任何规律数据
# 定位网页源代码
# 3. 解析数据
womAboard = json_data['data']['WomAboard']
# 循环 执行重复代码
for wom in womAboard:
    name = wom['name']
    confirmAdd = wom['confirmAdd']
    confirm = wom['confirm']
    dead = wom['dead']
    heal = wom['heal']
    nowConfirm = wom['nowConfirm']
    nowConfirmCompare = wom['nowConfirmCompare']
    print(name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare)
    # 4. 保存数据
    # mode='a': 追加写入
    with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
        csv_writer = csv.writer(f)
        csv_writer.writerow([name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare])

数据分析代码:

​
"""
import requests     # 发送请求 第三方模块(安装)
import csv

# 表格的表头
with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['name', 'confirmAdd', 'confirm', 'dead', 'heal', 'nowConfirm', 'nowConfirmCompare'])
# 赋值操作  x = 1, y = 2
url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'
# 1. 发送请求
response = requests.post(url)
# <Response [200]>: 请求成功
# json是一种前后端数据交互的格式
# json_data: Python里面字典类型数据
# 2. 获取数据
json_data = response.json()
# json 结构化数据
# 非结构化数据 网页源代码 没有任何规律数据
# 定位网页源代码
# 3. 解析数据
womAboard = json_data['data']['WomAboard']
# 循环 执行重复代码
for wom in womAboard:
    name = wom['name']
    confirmAdd = wom['confirmAdd']
    confirm = wom['confirm']
    dead = wom['dead']
    heal = wom['heal']
    nowConfirm = wom['nowConfirm']
    nowConfirmCompare = wom['nowConfirmCompare']
    print(name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare)
    # 4. 保存数据
    # mode='a': 追加写入
    with open('疫情数据.csv', mode='a', encoding='utf-8', newline='') as f:
        csv_writer = csv.wrier(f)
        csv_writer.writerow([name, confirmAdd, confirm, dead, heal, nowConfirm, nowConfirmCompare])

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==编辑效果展示——

1)爬虫数据

2)可视化图

初级图

优化图

2)🎉Python爬取某宝商品数据,零基础也能学习的案例哦!

爬虫代码:

"""
import requests     # 第三方模块
import re
import json
import csv

f = open('taobao.csv', mode='a', newline='', encoding='utf-8')
csv_writer = csv.writer(f)
csv_writer.writerow(['raw_title', 'view_price', 'item_loc', 'view_sales', 'comment_count', 'nick', 'detail_url'])
# 为什么要做伪装?
# 服务器肯定是不想给你数据的
# headers 构建成字典的
# 什么是字典呢? 字典是Python里面的一个数据容器{}, 列表[], 元组()
# {"":"", "":"", "":"", "":"", "":""}
headers = {
    'cookie': 'cna=s/5FG78j/FUCAa8APiecOvNg; tracknick=tb668512329; thw=cn; enc=5QzxAFeTLCIaj4DdlClUUmCfmppq0mVmYnRM4MnjLLB4RjqMpvuUixwqmjkBvCn0Jgo9mK5a7GX5bTUVvYOjcKlG6Dcyihb49SfHSHh4p5w%3D; t=213a75d5f9b973a401f09b4b2ec812d7; _cc_=URm48syIZQ%3D%3D; sgcookie=E100uQe2yhvlDzLeFPm4%2BfB6tf%2BFsK%2FMda5f7206IxmCCrAvLuVZh8UBxD%2FJNv7XB8FEpm04JpToQ7vBpAnzq53Nd%2Be35XveHYnbr7vbksiQXTo%3D; uc3=nk2=F5RDKmf768KMcHQ%3D&vt3=F8dCv4of0HO1FFYJIBE%3D&lg2=U%2BGCWk%2F75gdr5Q%3D%3D&id2=UUpgRsItw%2BrsB7dvyw%3D%3D; lgc=tb668512329; uc4=id4=0%40U2gqyZJ81Yv14cp6ZGKPzfQ18kyJG1rt&nk4=0%40FY4I6earzOZXUhcMjuCe8tiaY1Stpw%3D%3D; mt=ci=-1_0; _tb_token_=43f7e76e367f; _m_h5_tk=d9ed16b25f4b5df7ba6b499f4a885508_1667573369978; _m_h5_tk_enc=2b5734c43a982a947a8c43805ca6f756; cookie2=119afda486ca9dece1dd8cddb6af1ebd; xlly_s=1; uc1=cookie14=UoeyCURCeMBd0w%3D%3D; JSESSIONID=80D01100395EA2871F8B9EA1E137609F; l=eBrY7YtILf1CV5oyBO5ahurza77O2QOb8sPzaNbMiInca6BRtKdgnNCUVupDSdtjgtCXWetzmSrNYdEvJp4daxDDBexrCyCoExvO.; tfstk=cz9NBFt5MAHZ8nKxy9X2UmYzO95OagKMmJS5sqjsuG5gAlCGzsqgkMb1XMSbYrfG.; isg=BN7eZuVIMWxljWQk6kJ9bdpuL3Qgn6IZKkIfcIhkCyGEq3-F8C9tKT0Jo7enk5ox',
    'referer': 'https://s.taobao.com/search?q=iPhone14&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
# https://s.taobao.com/search?q=%E7%A1%AC%E7%9B%98&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8&bcoffset=1&ntoffset=1&p4ppushleft=2%2C48&s=44
# https://s.taobao.com/search?q=%E7%A1%AC%E7%9B%98&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8&bcoffset=-2&ntoffset=-2&p4ppushleft=2%2C48&s=88
# https://s.taobao.com/search?q=%E7%A1%AC%E7%9B%98&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8&bcoffset=-5&ntoffset=-5&p4ppushleft=2%2C48&s=132
# https://s.taobao.com/search?q=%E7%A1%AC%E7%9B%98&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8&bcoffset=-8&ntoffset=-8&p4ppushleft=2%2C48&s=176
for page in range(1, 100):
    print(f"----正在爬取第{page}页----")
    s = page*44
    coffset = 1-3*(page-1)
    url = f'https://s.taobao.com/search?q=%E7%A1%AC%E7%9B%98&imgfile=&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20221104&ie=utf8&bcoffset={coffset}&ntoffset={coffset}&p4ppushleft=2%2C48&s={s}'
    # 1. 发送请求
    response = requests.get(url=url, headers=headers)
    # 2. 获取数据
    html_data = response.text
    # 3. 解析数据
    # 结构化数据: json数据  字典取值
    # 非结构化数据: 网页源代码  xpath/css/re
    # g_page_config = (.*);
    # (.*): 匹配任意内容 直到最后一个;结束
    # 搜索功能高级用法
    # 从html_data里面匹配出 符合 g_page_config = (.*); 规则的数据
    # 以列表的形式返回给你  re.S 如果要匹配换行
    g_page_config = re.findall('g_page_config = (.*);', html_data)[0]
    # 从g_page_config里面取出所有的商品信息
    json_dict = json.loads(g_page_config)       # 字典格式数据了
    # 字典的好处 好取值 方便取值
    # xpath 提取标签属性或者文本内容
    # xpath 不能提取字典
    # {"键(拼音)":"值(字)", "A":"啊", "B":"不", "":"", "":""}['A']
    auctions = json_dict["mods"]['itemlist']['data']['auctions']    # 列表
    for auction in auctions:
        raw_title = auction['raw_title']
        view_price = auction['view_price']
        item_loc = auction['item_loc']
        view_sales = auction['view_sales']
        comment_count = auction['comment_count']
        nick = auction['nick']
        detail_url = auction['detail_url']
        print(raw_title, view_price, item_loc, view_sales, comment_count, nick, detail_url)
        # 4. 保存数据
        csv_writer.writerow([raw_title, view_price, item_loc, view_sales, comment_count, nick, detail_url])

附带:某宝秒杀脚本案例

import datetime
import time
from selenium import webdriver


now = datetime.datetime.now().strftme('%Y-%m-%d %H:%M:%S.%f')

times = "2022-03-03 21:07:00.00000000"
driver = webdriver.Chrome(r'C:\Users\Tony\PycharmProjects\Module_Tony_Demo\Moudle_游戏源码锦集\chromedriver.exe')
driver.get("https://www.taobao.com")
time.sleep(3)
driver.find_element_by_link_text("亲,请登录").click()

print(f"请尽快扫码登录")
time.sleep(20)
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)

# 是否全选购物车
while True:
    try:
        if driver.find_element_by_id("J_SelectAll1"):
            driver.find_element_by_id("J_SelectAll1").click()
            break
    except:
        print(f"找不到购买按钮")


while True:
    # 获取时间
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    print(now)
    # 判断  -
    if now > times:
        # 结算
        while True:
            try:
                if driver.find_element_by_link_text("结 算"):
                    print("here")
                    driver.find_element_by_link_text("结 算").click()
                    print(f"程序已将商品锁定,结算成功")
                    break
            except :
                pass
        # 提交订单
        while True:
            try:
                if driver.find_element_by_link_text('提交订单'):
                    driver.find_element_by_link_text('提交订单').click()
                    print(f"抢购成功,请尽快付款")
            except:
                print(f"恭喜,本程序已帮你抢到商品啦,您来支付吧")
                break
        time.sleep(0.01)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==编辑效果展示——

1)抢购中

2)枪成功

​3)VIP视频解析小程序

# -*- coding:utf-8 -*-
# url解析
from urllib import parse
import tkinter.messagebox as msgbox
import tkinter as tk
import webbrowser
import re

class APP:
    def __init__(self, width=500, height=300):
        self.w = width
        self.h = height
        self.title = ' VIP视频破解助手'
        self.root = tk.Tk(className=self.title)
        # 定义button控件上的文字
        self.url = tk.StringVar()

        # 定义选择哪个播放源
        self.v = tk.IntVar()

        # 默认为1
        self.v.set(1)

        # Frame空间
        frame_1 = tk.Frame(self.root)
        frame_2 = tk.Frame(self.root)
        frame_3 = tk.Frame(self.root)

        # Menu菜单
        menu = tk.Menu(self.root)
        self.root.config(menu=menu)
        moviemenu = tk.Menu(menu, tearoff=0)
        menu.add_cascade(label='友情链接', menu=moviemenu)
        # 各个网站链接
        moviemenu.add_command(label=        '腾讯视频', command = lambda: webbrowser.open('http://v.qq.com/'))
        moviemenu.add_command(label='搜狐视频', command=lambda: webbrowser.open('http://tv.sohu.com/'))
        moviemenu.add_command(label='芒果TV', command=lambda: webbrowser.open('http://www.mgtv.com/'))
        moviemenu.add_command(label='爱奇艺', command=lambda: webbrowser.open('http://www.iqiyi.com/'))
        moviemenu.add_command(label='PPTV', command=lambda: webbrowser.open('http://www.bilibili.com/'))
        moviemenu.add_command(label='优酷', command=lambda: webbrowser.open('http://www.youku.com/'))
        moviemenu.add_command(label='乐视', command=lambda: webbrowser.open('http://www.le.com/'))
        moviemenu.add_command(label='土豆', command=lambda: webbrowser.open('http://www.tudou.com/'))
        moviemenu.add_command(label='A站', command=lambda: webbrowser.open('http://www.acfun.tv/'))
        moviemenu.add_command(label='B站', command=lambda: webbrowser.open('http://www.bilibili.com/'))

        # 控件内容设置
        group = tk.Label(frame_1, text='请选择一个视频播放通道:', padx=10, pady=10)
        tb1 = tk.Radiobutton(frame_1, text='通道一', variable=self.v, value=1, width=10, height=3)
        tb2 = tk.Radiobutton(frame_1, text='通道二', variable=self.v, value=2, width=10, height=3)
        label1 = tk.Label(frame_2, text="请输入视频链接:")
        entry = tk.Entry(frame_2, textvariable=self.url, highlightcolor='Fuchsia', highlightthickness=1, width=35)
        label2 = tk.Label(frame_2, text=" ")
        play = tk.Button(frame_2, text="播放", font=('楷体', 12), fg='Purple', width=2, height=1, command=self.video_play)
        label3 = tk.Label(frame_2, text=" ")
        label_explain = tk.Label(frame_3, fg='red', font=('楷体', 12),
                                 text='\n注意:支持大部分主流视频网站的视频播放!\n此软件仅用于交流学习,请勿用于任何商业用途!')
        label_warning = tk.Label(frame_3, fg='blue', font=('楷体', 12), text='\n建议:将Chrome内核浏览器设置为默认浏览器\n作者: 顾木子吖')

        # 控件布局
        frame_1.pack()
        frame_2.pack()
        frame_3.pack()
        group.grid(row=0, column=0)
        tb1.grid(row=0, column=1)
        tb2.grid(row=0, column=2)
        label1.grid(row=0, column=0)
        entry.grid(row=0, column=1)
        label2.grid(row=0, column=2)
        play.grid(row=0, column=3, ipadx=10, ipady=10)
        label3.grid(row=0, column=4)
        label_explain.grid(row=1, column=0)
        label_warning.grid(row=2, column=0)

    """
    函数说明:视频播放
    """

    def video_play(self):
        # 视频解析网站地址
        port_1 = 'http://www.wmxz.wang/video.php?url='
        port_2 = 'http://www.vipjiexi.com/tong.php?url='

        # 正则表达是判定是否为合法链接
        if re.match(r'^https?:/{2}\w.+$', self.url.get()):
            if self.v.get() == 1:
                # 视频链接获取
                ip = self.url.get()
                # 视频链接加密
                ip = parse.quote_plus(ip)
                # 浏览器打开
                webbrowser.open(port_1 + self.url.get())
            elif self.v.get() == 2:
                # 链接获取
                ip = self.url.get()
                # 链接加密
                ip = parse.quote_plus(ip)

                # 获取time、key、url
                get_url = 'http://www.vipjiexi.com/x2/tong.php?url=%s' % ip

                # 请求之后立刻打开
                webbrowser.open(get_url)

        else:
            msgbox.showerror(title='错误', message='视频链接地址无效,请重新输入!')

    """
    函数说明:tkinter窗口居中
    """

    def center(self):
        ws = self.root.winfo_screenwidth()
        hs = self.root.winfo_screenheight()
        x = int((ws / 2) - (self.w / 2))
        y = int((hs / 2) - (self.h / 2))
        self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))

    """
    函数说明:loop等待用户事件
    """

    def loop(self):
        # 禁止修改窗口大小
        self.root.reizable(False, False)
        # 窗口居中
        self.center()
        self.root.mainloop()


if __name__ == '__main__':
    app = APP()  # 实例化APP对象
    app.loop()  # loop等待用户事件

效果展示——

总结

案例的话都没有特别详细的,文章太长,大家需要的话有详细的视频跟代码的,需要的话可以

找我来拿哈!保证可以白嫖,只要是有视频代码的(部分没得)

要啥给啥哦~这里没有的案例实战大家也可以说说名字吼 比如 :12306抢票、火车票购票、链

家房源等等。之前写过超多的案例来着。大家需要的话自己来哈!

​​文章写到这里就正式结束了哈~我们下期再见啦!

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目2.8  黑白上色技巧

OpenCv之黑白上色小技巧,奥黛丽赫本神颜,超惊艳滴~

项目2.9  Opencv实战案例

【OpenCV案例实战分享】关于图像处理的一些基本操作之二值化、图像加噪处理......

项目3.2   Opencv合集3款神仙代码

【OpenCV案例合集】竟还有如此的神仙代码,爱了爱了......真有趣(附3款源码)

项目3.3  图片处理加/去水印

【一篇解决】Python图片处理: 去水印/加水印—这几个方法你一定要学会,太神奇了~(建议保留)

🎄文章汇总——

汇总合集  Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 内存模型之 JMM

—— 计算机存储结构 计算机存储结构&#xff0c;从本地磁盘到主存到 CPU 缓存&#xff0c;也就是硬盘到内存&#xff0c;到CPU&#xff0c;一般对应的程序的操作就是从数据库到内存然后到CPU进行计算CPU拥有多级缓存&#xff0c;&#xff08;CPU和物理主内存的速度不一致&…

群集搭建【LNMP+负载均衡+高可用+跳板机】

目录 项目需求 LNMP部署 web1部署 mysql部署 php部署 nfs部署 LNMP测试 负载均衡与高可用 web2部署 lb1部署 lb2部署 验证群集 跳板机功能 测试跳板机 项目需求 实验目标&#xff1a;根据拓扑图搭建环境&#xff0c;安装论坛&#xff0c;创建证书通过https访问&#xff0c;实现…

一文搞懂 Nginx

文章目录一、前言二、NGINX 指令与上下文2.1 指令2.2 上下文三、NGINX 静态文件处理3.1 静态文件配置3.2 静态文件类型处理四、NGINX 动态路由4.1 Location 匹配4.1.1 前缀匹配4.1.2 精准匹配4.1.3 正则匹配4.1.4 优先前缀匹配4.2 Location 匹配优先级4.2.1 匹配优先级对比4.2.…

学好selenium工具,能实现你想得到的所有事情

文章目录一、介绍背景二、开发与实现2.1、部署开发环境2.2、开始码代码<demo只为提供思路>2.3、思路分析2.4、难点解析三、总结一、介绍背景 情况是这样的&#xff1a;某段时间之前&#xff0c;开发想找我用ui自动化帮他们实现一个功能&#xff1a;在系统某些时候生成报告…

[附源码]计算机毕业设计大学生心理健康测评系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

零基础CSS入门教程(17)——内边距

本章目录1.任务目标2.默认情况3.有内边距4.小结1.任务目标 上一篇介绍了外边距&#xff0c;也就是元素跟相邻元素的距离。 本篇来介绍内边距&#xff0c;顾名思义&#xff0c;内边距是指的元素内部的内容&#xff0c;与元素的边的距离 2.默认情况 <!DOCTYPE html> <…

Velero 系列文章(一):基础

概述 Velero 是一个开源工具&#xff0c;可以安全地备份和还原&#xff0c;执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。 灾难恢复 Velero 可以在基础架构丢失&#xff0c;数据损坏和/或服务中断的情况下&#xff0c;减少恢复时间。 数据迁移 Velero 通过轻松地将 …

使用VictoriaMetrics 对Prometheus的数据进行分布式存储

前言 Prometheus 就是一个很好的时序数据库&#xff0c;对于监控数据量没有超过千万级的 情况下没必要进行分布式存储。一般的监控数据存3个月以内即可&#xff0c;所以数据量并不会很大。 并且生产环境可以搞多个Proms数据源在Grafana中做统一的告警。并且在时序数据库的排名…

windows安装minikube

由于学习的需要&#xff0c;需要在windows上搭建一套可以使用的k8s学习用&#xff0c;最后选择了minikube这个安装k8s&#xff0c;本博客介绍了minikube的安装步骤&#xff0c;详细命令以及截图 1、首先是本机windows安装docker&#xff0c;具体可以参考这个 win10安装docker…

奥曲肽-葡聚糖-亲和索的偶联物TOC-Dx40-Av)|紫杉醇-DHA-右旋糖酐偶联聚合物

中文名称&#xff1a;奥曲肽-葡聚糖-亲和索的偶联物 英文名称&#xff1a;TOC-Dx40-Av 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体 包装&#xff1a;瓶装/袋装 溶解性&#xff1a;溶于大部分有机溶剂&#xff0…

GC 算法总结_java培训

1.标记清除压缩(Mark-Sweep-Compact) 标记清除、标记压缩的结合使用 原理java培训GC 算法总结 2.算法总结 内存效率&#xff1a;复制算法>标记清除算法>标记整理算法&#xff08;此处的效率只是简单的对比时间复杂度&#xff0c;实际情况不一定如此&#xff09;。 内…

城市云灾备,为业务连续性保驾护航

摘要&#xff1a;华为云作为中国政务云基础设施领域领导者&#xff0c;基于华为公有云技术架构的政务云平台&#xff0c;具备领先的云灾备技术实力&#xff0c;支持IaaS、PaaS等云服务云原生灾备能力。本文分享自华为云社区《城市云灾备&#xff0c;为业务连续性保驾护航》&…

Delphi Base64 的“坑”

使用 Delphi 原生的Base64编码&#xff08;System.NetEncoding 单元&#xff09; &#xff0c;编码后的字符串每隔76个字符会增加一个回车换行&#xff08;#13#10&#xff09;&#xff0c;这样就导致和其他语言对接的时候出现问题&#xff0c;特别是Base64以后再进行签名&#…

元学习:IVIF:输入不同分辨率,输出任意分辨率

Different Input Resolutions and Arbitrary Output Resolution: A Meta Learning-Based Deep Framework for Infrared and Visible Image Fusion &#xff08;不同的输入分辨率和任意输出分辨率: 基于元学习的红外和可见光图像融合深度框架&#xff09; 在本文中&#xff0c…

Web大学生网页作业成品——城市环卫管理系统后台模板(HTML+CSS+JavaScript)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

浏览器中的音视频知识总结v1.0(工作中需要和视频打交道必看)

视频是什么 视频&#xff0c;其实就是一系列连续播放的图片&#xff0c;如果1s钟播放24张图片&#xff0c;那么人眼看到的就不再是一张张独立的图片&#xff0c;而是动起来的画面。其中一张图片称为一帧&#xff0c;1s播放的图片数称为帧率。常见的帧率有24帧/s&#xff0c;30帧…

[附源码]JAVA毕业设计西安市城市绿地管理系统(系统+LW)

[附源码]JAVA毕业设计西安市城市绿地管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

Linux网络原理及编程(3)——第十三节 HTTPS

我们本文主要来介绍https&#xff0c;主要来介绍https的加密原理。 大家应该都知道http和https的区别&#xff0c;区别很简单&#xff0c;主要就是在https是采用了加密协议的&#xff0c;而http完全是在网络上裸奔的。而我们现在几乎所有的连接都用的是https 我们首先需要明白…

Flink学习26:触发器

触发器 作用&#xff1a;决定何时&#xff0c;触发窗口计算函数&#xff0c;开始计算 每个窗口都有一个默认触发器&#xff0c;也可以自定义触发器。 自定义触发器 示例1&#xff1a; 当流中元素达到5个以后&#xff0c;触发窗口计算。 import org.apache.flink.api.common.fu…

基于数据挖掘算法的服装销售平台的设计与实现(spring+spring mvc+mybatis+mysql+maven)

目 录 摘 要 I Abstract II 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 研究意义 2 1.3 国内外研究现状 2 2 相关理论和开发工具 4 2.1 数据挖掘简述 4 2.2 相关数据挖掘算法概述 4 2.2.1关联规则 4 2.2.2 聚类算法 5 2.2.3 分类算法 5 2.3 文本挖掘概述 6 2.4 开发工具 7 3系统需…