Python爬虫入门(结合网站代码演示)

news2024/11/13 23:32:00

原理

        第一步发送请求

        与浏览器请求访问服务器地址一样,python程序向服务器发送访问请求,服务器返回数据。

        在python中我们可以使用

        第二步解析网页内容

        浏览器在接收到服务器返回的数据后,会自行解析内容最后呈现出我们所看到的界面。但是在程序中我们收到的内容是一大串数据,我们需要分析这些数据去拿到我们想要的内容。

        第三步储存和分析数据 

详细过程

我们以汽车之家二手车内容为例(我随便找的网站)

        发送请求

        可以使用python中的requests库,来构建get请求

import requests

# 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
# 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}

# 传入headers参数,修改指定信息
response = requests.get('https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=102179#currengpostion', headers=headers)

if response.ok:
    # 使用response.text查看请求结果的内容
    print("请求成功")
    # print(response.text)
else:
    print("响应失败")

         输出结果如下:

        可以看到,我们请求响应得到的结果是一个htm文件格式的内容,这是对应网页的源码,就与我们在该网页查看详细源码的结果一样

        user-agent的查询方法:进入该网站的详细页面,点击网络

解析内容

        根据个人需求,我们拟定的获取目标如下:即一辆车的售价、行使公里数、上牌日期、出售地、车名

        可以使用python中的BeautifulSoup库,来解析html文件,解析后的解构为树状结构,方便程序查询想要的内容,如下图:

        通过在网页源码端口的详细查询,我们得知了汽车名字的信息如下:h4标签,class类别是'card-name'。

        所以我们可以使用BeautifulSoup来解析和查找对应信息,代码如下:

import requests
from bs4 import BeautifulSoup

# 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
# 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}

# 传入headers参数,修改指定信息
response = requests.get('https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=102179#currengpostion', headers=headers)

if response.ok:
    print("请求成功")

    # 将得到的HTML文本转换成BeautifulSoup对象
    # 因为BeautifulSoup不光可以解析HTML文件,使用需要指定解析器为HTML解析器
    soup = BeautifulSoup(response.text, 'html.parser')

    # 查找标签为h4,class_='card-name'的元素,返回一个列表
    car_name = soup.findAll('h4', class_='card-name')

    for i in car_name:

        # 因为返回的列表是标签类型,需要取出文本所以加上.string
        print(i.string)

else:
    print("响应失败")

        运行结果:

         辆车的售价、行使公里数、上牌日期、出售地、车名的整个解析:

        由于一辆车的所有信息都放在一个<li>标签下,为了保证信息一一对应,我们放弃之前查询全部<h4>标签的做法,转而先查询所有<li>标签,然后再查询该<li>标签下的汽车名字、价格、信息等,这样就可以做到信息的对应。

        对应代码如下:

# 汽车之家二手车信息爬取
import requests
from bs4 import BeautifulSoup

# 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
# 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}

# 传入headers参数,修改指定信息
response = requests.get('https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=102179#currengpostion', headers=headers)

if response.ok:
    print("请求成功")

    # 创建列表储存数据
    all_data = []

    # 将得到的HTML文本转换成BeautifulSoup对象
    # 因为BeautifulSoup不光可以解析HTML文件,使用需要指定解析器为HTML解析器
    soup = BeautifulSoup(response.text, 'html.parser')

    # 找到所有li标签
    all_tag_li = soup.find_all('li', class_='cards-li list-photo-li')

    # 在每个li标签中找到想要的信息
    for tag_li in all_tag_li:
        try:
            # 价格
            price = tag_li.find('span', class_='pirce').find('em').text

            # 名字
            name = tag_li.find('h4', class_='card-name').text

            # 信息
            info = tag_li.find('p', class_='cards-unit').text

            # 加入到列表中
            all_data.append([price, name, info])

        except AttributeError:
            # 对于个别li标签不完整的,忽略并继续下一个
            continue

    for data in all_data:
        print(data)

else:
    print("响应失败")

        运行结果:

 

结果储存

        根据需求选择储存方式,这里我选项保存到本地csv文件中。代码如下:

# 汽车之家二手车信息爬取
import requests
from bs4 import BeautifulSoup
import csv

# 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
# 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}

# 传入headers参数,修改指定信息
response = requests.get('https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=102179#currengpostion', headers=headers)

if response.ok:
    print("请求成功")

    # 创建列表储存数据
    all_data = []

    # 将得到的HTML文本转换成BeautifulSoup对象
    # 因为BeautifulSoup不光可以解析HTML文件,使用需要指定解析器为HTML解析器
    soup = BeautifulSoup(response.text, 'html.parser')

    # 找到所有li标签
    all_tag_li = soup.find_all('li', class_='cards-li list-photo-li')

    # 在每个li标签中找到想要的信息
    for tag_li in all_tag_li:
        try:
            # 价格
            price = tag_li.find('span', class_='pirce').find('em').text
            # 名字
            name = tag_li.find('h4', class_='card-name').text
            # 信息
            info = tag_li.find('p', class_='cards-unit').text
            # 加入到列表中
            all_data.append([price, name, info])
        except AttributeError:
            # 对于个别li标签不完整的,忽略并继续下一个
            continue

    # 定义CSV文件的路径为当前python文件所在路径目录下,名称为car_data.csv
    csv_file_path = './car_data.csv'

    with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
        # 创建CSV写入器
        csv_writer = csv.writer(csv_file)
        # 写入CSV文件的表头
        csv_writer.writerow(['价格', '名称', '信息'])
        # 写入CSV文件的每一行数据
        csv_writer.writerows(all_data)

    print(f"数据已保存到 {csv_file_path}")


else:
    print("响应失败")

运行结果:

优化程序 

        1.上述代码只能爬取一页的内容,我们需要把整个100页内的所有汽车信息爬取下来。

         2.由于<li>标签内的汽车信息是分布在一个<p>标签内的,导致爬取到的汽车公里数、上牌时间、出售地点没有得到分开,我们需要分别存储这些信息。

        最终代码如下:

# 汽车之家二手车信息爬取
import os
import requests
from bs4 import BeautifulSoup
import csv


def download(page):
    # 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
    # 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
    headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}

    # 传入headers参数,修改指定信息
    response = requests.get(f'https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp{page}exx0/?pvareaid=102179#currengpostion',headers=headers)

    if response.ok:
        # 创建列表储存数据
        all_data = []

        # 将得到的HTML文本转换成BeautifulSoup对象
        # 因为BeautifulSoup不光可以解析HTML文件,使用需要指定解析器为HTML解析器
        soup = BeautifulSoup(response.text, 'html.parser')

        # 找到所有li标签
        all_tag_li = soup.find_all('li', class_='cards-li list-photo-li')

        # 在每个li标签中找到想要的信息
        for tag_li in all_tag_li:
            try:
                # 价格
                price = tag_li.find('span', class_='pirce').find('em').text
                # 名字
                name = tag_li.find('h4', class_='card-name').text
                # 信息
                info = tag_li.find('p', class_='cards-unit').text
                # 切割信息
                info_list = info.split('/')
                # 里程
                mileage = info_list[0]
                # 上牌日期
                date = info_list[1]
                # 出售地点
                location = info_list[2]
                # 加入到列表中
                all_data.append([price, name, mileage, date, location])
            except AttributeError:
                # 对于个别li标签不完整的,忽略并继续下一个
                continue

        # 定义CSV文件的路径为当前python文件所在路径目录下,名称为car_data.csv
        csv_file_path = './car_data.csv'

        # 检查CSV文件是否存在
        if os.path.exists(csv_file_path):
            # 如果CSV文件存在,则追加写入
            with open(csv_file_path, 'a', newline='', encoding='utf-8') as csv_file:
                # 创建CSV写入器
                csv_writer = csv.writer(csv_file)
                # 写入CSV文件的每一行数据
                csv_writer.writerows(all_data)
        else:
            # 如果CSV文件不存在,则创建并写入
            with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
                # 创建CSV写入器
                csv_writer = csv.writer(csv_file)
                # 写入CSV文件的表头
                csv_writer.writerow(['价格', '名称', '里程', '上牌日期', '出售地点'])
                # 写入CSV文件的每一行数据
                csv_writer.writerows(all_data)

        print(f"网页{page}爬取成功")

    else:
        print("响应失败")


if __name__ == "__main__":
    # 取100页数据
    for i in range(1, 101):
        download(i)
    print("所有网页取完成")

 运行结果:

csv文件展示:

 存在的问题

        最后爬取到的数据只有217条,显然是远远少于实际数据的。问题出在了内容解析的时候,因为每个<li>标签不能保证都是完整的按照我们的格式来的,例如有的<li>标签缺少'span', class_='pirce'、有的<li>标签缺少'h4', class_='card-name',所以在爬取不完整标签的时候会报错AttributeError,这里我使用了异常捕获跳过了报错,同时也跳过了爬取这条不完整的数据。

        后续解决了我会更新代码的。

        更新:

        因为在<li>标签中的class类,有的是cards-li list-photo-li cxc-card,有的是cards-li list-photo-li,所以在爬取的时候我们的代码只爬取了类别为cards-li list-photo-li的数据。

        解决办法很简单,我们直接搜索指定目录下的所有<li>标签即可。

        由于之前的代码headers只有user-agent,连续爬取几次后就会被网站拒绝访问,所以在headers中多添加了几个参数,让我们的爬虫程序看起来更像浏览器的访问操作。同时加入系统沉睡,限制程序每一秒只访问一个页面,减少被拒绝访问的风险。

        参数的获取方法与user-agent相同

 

最终源码

# 汽车之家二手车信息爬取
import os
import time
import requests
from bs4 import BeautifulSoup
import csv


def download(page):
    # 定义headers参数,修改 User-Agent来模拟浏览器的请求访问
    # 如果不写user-agent,服务器会知道这个get请求是来自于程序发出的而不是浏览器,对于一些不希望被爬取的网站可能会拒绝访问
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
        'Cache-Control': 'max-age=0',
        'priority': 'u=0, i',
        'upgrade-insecure-requests': '1',
        'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0",
        'Cookie': 'fvlid=1722413416137LVe9FhE7rzhg; sessionid=f4912b41-3403-445e-b9d4-4fc459234c54; sessionip=10.132.4.114; area=0; Hm_lvt_d381ec2f88158113b9b76f14c497ed48=1722413417; HMACCOUNT=055AE983BAABD8CA; che_sessionid=41B341E6-588E-4350-BC8B-0271539DE377%7C%7C2024-07-31+16%3A10%3A17.436%7C%7Cwww.autohome.com.cn; UsedCarBrowseHistory=0%3A51459576; carDownPrice=1; userarea=0; listuserarea=0; sessionvisit=c00aac7b-cd18-4f3d-9495-566e1ada5783; sessionvisitInfo=f4912b41-3403-445e-b9d4-4fc459234c54||0; che_sessionvid=5B005A7D-BFFD-46DD-8FF7-52B4D66F5ED6; ahpvno=34; Hm_lpvt_d381ec2f88158113b9b76f14c497ed48=1722431981; showNum=34; ahuuid=EEBCCA8E-4EA4-4FF4-BD14-05E154C3AFEF; v_no=34; visit_info_ad=41B341E6-588E-4350-BC8B-0271539DE377||5B005A7D-BFFD-46DD-8FF7-52B4D66F5ED6||-1||-1||34; che_ref=www.autohome.com.cn%7C0%7C100444%7C0%7C2024-07-31+21%3A19%3A42.067%7C2024-07-31+16%3A10%3A17.436; sessionuid=f4912b41-3403-445e-b9d4-4fc459234c54'
    }

    # 传入headers参数,修改指定信息
    response = requests.get(f'https://www.che168.com/china/20_30/a0_0msdgscncgpi1ltocsp{page}exx0/?pvareaid=102179#currengpostion',headers=headers)

    if response.ok:
        # 创建列表储存数据
        all_data = []

        # 将得到的HTML文本转换成BeautifulSoup对象
        # 因为BeautifulSoup不光可以解析HTML文件,使用需要指定解析器为HTML解析器
        soup = BeautifulSoup(response.text, 'html.parser')

        # 找到所有li标签
        all_tag_li = soup.find('div', class_='content fn-clear card-wrap') \
            .find('div', class_='tp-cards-tofu fn-clear') \
            .find('ul', class_='viewlist_ul').find_all('li')

        # 在每个li标签中找到想要的信息
        for tag_li in all_tag_li:
            try:
                # 价格
                price = tag_li.find('span', class_='pirce').find('em').text
                # 名字
                name = tag_li.find('h4', class_='card-name').text
                # 信息
                info = tag_li.find('p', class_='cards-unit').text
                # 切割信息
                info_list = info.split('/')
                # 里程
                mileage = info_list[0]
                # 上牌日期
                date = info_list[1]
                # 出售地点
                location = info_list[2]
                # 加入到列表中
                all_data.append([price, name, mileage, date, location])
            except AttributeError:
                # 对于个别li标签不完整的,忽略并继续下一个
                continue

        # 定义CSV文件的路径为当前python文件所在路径目录下,名称为car_data.csv
        csv_file_path = './car_data.csv'

        # 检查CSV文件是否存在
        if os.path.exists(csv_file_path):
            # 如果CSV文件存在,则追加写入
            with open(csv_file_path, 'a', newline='', encoding='utf-8') as csv_file:
                # 创建CSV写入器
                csv_writer = csv.writer(csv_file)
                # 写入CSV文件的每一行数据
                csv_writer.writerows(all_data)
        else:
            # 如果CSV文件不存在,则创建并写入
            with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
                # 创建CSV写入器
                csv_writer = csv.writer(csv_file)
                # 写入CSV文件的表头
                csv_writer.writerow(['价格', '名称', '里程', '上牌日期', '出售地点'])
                # 写入CSV文件的每一行数据
                csv_writer.writerows(all_data)

        print(f"网页{page}爬取成功,找到{len(all_data)}条数据")

    else:
        print("响应失败")


if __name__ == "__main__":
    # 取100页数据
    for i in range(1, 101):
        try:
            download(i)
        except AttributeError:
            print(f"网页{i}取失败")
        time.sleep(1)  # 沉睡1秒,避免被网站拒绝
    print("所有网页取完成")

结果如下: 

CSV结果如下:

        最后爬取到了八千多条数据 

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

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

相关文章

Centos7.6安装Nginx(yum安装和源码安装)

Centos7.6安装Nginx&#xff08;yum安装和源码安装&#xff09; 简介 yum安装 源码安装 安装后的事情 常见问题 简介 Nginx&#xff08;发音为“engine X”&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也可以作为邮件代理服务器使用。它被广泛应用于高流量…

linux进程控制——进程等待——wait、waitpid

前言&#xff1a;本节内容仍然是进程的控制&#xff0c;上一节博主讲解的是进程控制里面的进程创建、进程退出、终止。本节内容将讲到进程的等待——等待是为了能够将子进程的资源回收&#xff0c;是父进程等待子进程。 我们前面的章节也提到过等待&#xff0c; 那里的等待是进…

《C++基础入门与实战进阶》专栏介绍

&#x1f680; 前言 本文是《C基础入门与实战进阶》专栏的说明贴&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09;。 专栏介绍&#xff1a;以多年的开发实战为基础&#xff0c;总结并讲解一些的C/C基础与项目实战进阶内…

在MySQL中COUNT(*)、COUNT(列)和COUNT(DISTINCT 列)有什么区别

本文还发布在我的 medium 和 掘金 上 这篇文章让我们看看MySQL中count(*)和count(column_name)有什么区别。也许你知道它们都是计算结果行数的&#xff0c;那么在使用的时候如何选择呢。 我在MySQL库中创建了一个t_hero表 CREATE TABLE t_hero (id int NOT NULL,name char(10)…

软件测试——用例篇(上)

概念 什么是测试⽤例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 设计测试⽤例原则⼀&#xff1a; 测试⽤例中⼀个必需部分是对…

AI-WEB-1.0 靶机

AI-WEB-1.0 一、安装靶机环境 下载地址&#xff1a; https://www.vulnhub.com/entry/ai-web-1,353/ 下载压缩文件打开 开启虚拟机 二、信息收集 1.查看NAT模式IP段 编辑–>虚拟网络编辑器 御剑2014查IP 找到ip之后就访问网站 用扫描目录的工具扫描当前网站的目录 访问…

复制知乎文字内容

复制知乎文字内容 以edge浏览器为例&#xff1a; 以edge浏览器为例&#xff1a; 先点击F12&#xff08;也就是鼠标右键->检查&#xff09;再点击F1选择禁用Javascript 之后知乎的文字就可以正常复制了。 &#xff08;注意&#xff1a;退出浏览器的时候记得把这一条恢复过…

XAML 热重载应用程序

XAML 热重载&#xff08;Hot Reload&#xff09;是一个在开发过程中提高效率的功能&#xff0c;它允许开发者在应用程序运行时修改 XAML 代码&#xff0c;而不需要重新启动应用程序。这个功能非常适合于调试和即时预览 UI 更改。以下是如何在应用程序中使用 XAML 热重载的一些基…

CVE-2022-21663: WordPress <5.8.3 版本对象注入漏洞深入分析

引言 在网络安全领域&#xff0c;技术的研究与讨论是不断进步的动力。本文针对WordPress的一个对象注入漏洞进行分析&#xff0c;旨在分享技术细节并提醒安全的重要性。特别强调&#xff1a;本文内容仅限技术研究&#xff0c;严禁用于非法目的。 漏洞背景 继WordPress CVE-2…

系统设计中15 个最重要的权衡

系统设计的第一法则&#xff1a;一切都与权衡有关。 在设计系统时&#xff0c;我们需要决定要包含哪些功能以及要忽略哪些功能。每次我们做这个决定时&#xff0c;我们都在进行权衡。在本文中&#xff0c;我们将探讨系统设计中遇到的15个最常见的权衡问题&#xff0c;并使用实…

第十四天学习笔记2024.7.25

Git安装 1.安装git 2.创建git仓库 3.创建文件并且提交文件 &#xff08;git add . 将文件提交到缓存&#xff09;&#xff08;git commit -m 说明&#xff09;&#xff08;git log 查看历史&#xff09; 4.分支创建与解决分支冲突问题 创建主机&#xff08;git 192.1…

手机三要素接口怎么对接呢?(二)

一、什么是手机三要素&#xff1f; 手机三要素又叫运营商三要素&#xff0c;运营商实名认证&#xff0c;运营商实名核验&#xff0c;手机三要素实名验证&#xff0c;手机三要素实名核验&#xff0c;每个人的称呼都不同&#xff0c;但是入参和出参是一样的。 输入姓名、身份证…

24暑假算法刷题 | Day25 | 回溯算法 III | LeetCode 491. 非递减子序列,46. 全排列,47. 全排列 II

目录 491. 非递减子序列题目描述题解 46. 全排列题目描述题解 47. 全排列 II题目描述题解 491. 非递减子序列 点此跳转题目链接 题目描述 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任…

MELLE: Autoregressive Speech Synthesis without Vector Quantization

2024.7MICROSOFT 文章目录 MELLE: Autoregressive Speech Synthesis without Vector Quantizationabstractmethod损失函数 Autoregressive Image Generation without Vector Quantizationabstractmethods更好的AR modelresults MELLE: Autoregressive Speech Synthesis without…

UI框架与MVC模式详解(3)——MVC\MVP\MVVM

【PDI模式】 前文中&#xff0c;我们详细讲解了为实现一个涉及UI的功能所必须得三者&#xff0c;简称PDI&#xff1a; Panel类&#xff1a;主要实现交互逻辑、显示逻辑的地方以及保存界面相关的数据的地方Data类&#xff1a;数据管理类&#xff0c;主要是业务相关的数据Inter…

小白也能轻松学的计算机网络零基础入门(附学习路线 + 计算机网络教程)

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 介绍 计算机网络是指将地理位置不同的多台计算机或设备通过通信线路进行连接&#xff0c;从而实现信息传递和资源共享&#xff0c;或者组成一个更完整的计算机系统。 如今&…

【MySQL】用户管理连接池原理{数据库权限/连接池/mysql访问逻辑}

文章目录 1.普通用户的引入用户创建用户删除用户修改用户密码 2.数据库的权限给用户授权回收权限实操过程 3.简略介绍mysql连接池3.一个用户注册/登录/使用网页版mysql逻辑 1.普通用户的引入 用户 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中 mysql> use…

Internet Download Manager(IDM)2024最新免费版电脑下载管理器

1. Internet Download Manager&#xff08;IDM&#xff09;是一款流行的下载管理软件&#xff0c;以其高速、稳定的下载性能著称。 2. IDM支持多线程下载&#xff0c;可以显著提高下载速度。 3. 该软件还具备恢复中断下载的功能&#xff0c;对于网络不稳定的用户非常实用。 …

蓝鹏测径仪非标定制订制流程

测径仪通常属于非标定制设备&#xff0c;非标定制意味着这些设备不是按照标准规格批量生产的&#xff0c;而是根据特定的客户需求和应用场景设计和制造的。例如&#xff0c;某些测径仪可能需要特殊的测量范围、精度、传感器或软件来满足特定的工业检测要求。 测径仪非标定制的…

Axure Web端元件库:构建高效互动网页的基石

在快速迭代的互联网时代&#xff0c;Web设计与开发不仅追求视觉上的美感&#xff0c;更注重用户体验的流畅与功能的强大。Axure RP&#xff0c;作为一款专业的原型设计工具&#xff0c;凭借其强大的交互设计能力和丰富的元件库&#xff0c;成为了众多UI/UX设计师、产品经理及前…