python爬虫练习,爬取iview,element组件库图标名称

news2024/11/16 10:28:21

简单的爬虫

先举一个爬取图片网站图片保存到本地文件夹的例子 

原博客:http://t.csdnimg.cn/Cjv3o

这是一个图片网站

https://pic.netbian.com/

在空白处右键,查看页面源代码,我们发现有具体内容的

我们使用下面的代码可以爬取这个页面所有图片,并且保存在这个Python项目里面的文件夹中

import requests
import re
import os

url = "https://pic.netbian.com/"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
}

response = requests.get(url=url,headers=headers)
response.encoding = response.apparent_encoding

"""
. 表示除空格外任意字符(除\n外)
* 表示匹配字符零次或多次
? 表示匹配字符零次或一次
.*? 非贪婪匹配
"""
parr = re.compile('src="(/u.*?)".alt="(.*?)"') # 匹配图片链接和图片名字
image = re.findall(parr,response.text)

path = "彼岸图网图片获取"
if not os.path.isdir(path): # 判断是否存在该文件夹,若不存在则创建
    os.mkdir(path) # 创建
    
# 对列表进行遍历
for i in image:
    link = i[0] # 获取链接
    name = i[1] # 获取名字
    """
    在文件夹下创建一个空jpg文件,打开方式以 'wb' 二进制读写方式
    @param res:图片请求的结果
    """
    with open(path+"/{}.jpg".format(name),"wb") as img:
        res = requests.get("https://pic.netbian.com"+link)
        img.write(res.content) # 将图片请求的结果内容写到jpg文件中
        img.close() # 关闭操作
    print(name+".jpg 获取成功······")
 

回归正题,我们需要爬取iview和element网站的图标库中图标名称

首先我们知道iview的图标组件的网址是:http://v4.iviewui.com/components/icon

我们在空白处右键查看页面源代码,发现是空白的

这是因为vue的渲染机制

动态生成内容:网页的内容是通过 JavaScript 动态生成的,而右键查看源代码只会显示初始加载的 HTML 结构,而不会显示后续通过 JavaScript 生成的内容。这可能是导致源代码为空白的原因。你可以尝试使用浏览器的开发者工具(通常通过按 F12 键打开)来查看动态生成的内容。

使用浏览器的开发者工具:打开浏览器的开发者工具(通常通过按 F12 键打开),切换到 "Elements" 或 "Elements" 选项卡,这里会显示页面的 DOM 结构和动态生成的内容。

那么我们怎么让爬虫执行操作看到dom结构呢?

可以使用   selenium

首先安装   pip install  selenium

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化 Selenium WebDriver,选择适合的浏览器驱动,如 ChromeDriver
driver = webdriver.Chrome()
driver.maximize_window()  #设置窗口最大化
driver.implicitly_wait(1) #设置等待3秒后打开目标网页
url="http://v4.iviewui.com/components/icon"
#使用get方法访问网站
driver.get(url)
# 找到所有的 .icons-item 元素
icon_items = driver.find_elements(By.CSS_SELECTOR, '.icons-item')
# 遍历打印每个元素的文本内容
for item in icon_items:
    print(item.text)
#退出浏览器
driver.quit()

这个运行需要一点时间

控制台打印

icon_items = driver.find_elements(By.CSS_SELECTOR, '.icons-item')

为什么我们找icons-item  ? 

在f12元素中我们看到图标都在这里面

我们在iview的组件页复制图标是这个    <Icon type="ios-add" />

但是我们通常需要  icon="md-redo"

print的时候处理一下就行了

下面我们爬取element的

图标网页地址: https://element.eleme.io/#/zh-CN/component/icon

我们看 f 12元素

所以所有icon-name就行了

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化 Selenium WebDriver,选择适合的浏览器驱动,如 ChromeDriver
driver = webdriver.Chrome()
driver.maximize_window()  #设置窗口最大化
driver.implicitly_wait(1) #设置等待3秒后打开目标网页
url="https://element.eleme.io/#/zh-CN/component/icon"
#使用get方法访问网站
driver.get(url)
# 找到所有的 .icon-name 元素
icon_items = driver.find_elements(By.CSS_SELECTOR, '.icon-name')
# 遍历打印每个元素的文本内容
for item in icon_items:
    print('icon="'+item.text+'"')
#退出浏览器
driver.quit()

在 Selenium 中,find_element 和 find_elements 是 WebDriver 对象的方法,用于查找网页中的元素。它们的区别如下:

  • find_element:该方法用于查找单个匹配的元素。如果找到多个匹配的元素,它只会返回第一个匹配的元素。
  • find_elements:该方法用于查找所有匹配的元素,并返回一个元素列表。

选择器的使用方法取决于选择器的类型。以下是一些常见的选择器和使用方法:

  1. By.ID:通过元素的 ID 属性进行选择。
    例如:driver.find_element(By.ID, "my-element")

  2. By.CLASS_NAME:通过元素的 class 属性进行选择。
    例如:driver.find_element(By.CLASS_NAME, "my-class")

  3. By.NAME:通过元素的 name 属性进行选择。
    例如:driver.find_element(By.NAME, "my-name")

  4. By.CSS_SELECTOR:通过 CSS 选择器进行选择。
    例如:driver.find_element(By.CSS_SELECTOR, ".my-selector")

  5. By.XPATH:通过 XPath 表达式进行选择。
    例如:driver.find_element(By.XPATH, "//div[@class='my-class']")

这些选择器方法可以用于 find_element 和 find_elements

关于调用的事件,你可以使用 driver 对象调用各种方法与元素进行交互和操作。以下是一些常见的可调用事件:

  • click():模拟单击元素。
  • send_keys():向元素发送键盘输入。
  • text:获取元素的文本内容。
  • get_attribute():获取元素的某个属性值。
  • clear():清空输入元素的内容。
  • submit():提交表单元素。

这只是一些常见的事件和方法示例,Selenium 还提供了更多方法和事件,可以根据具体需求进行调用和使用。你可以参考 Selenium 文档或官方文档以获取更详细的信息。

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

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

相关文章

2023年09月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 Python编程&#xff08;1~6级&#xff09;全部真题・点这里 第1题&#xff1a;数组指定部分逆序重放 将一个数组中的前k项按逆序重新存放。例如&#xff0c;将数组8,6,5,4,1前3项逆序重放得到5,6,8,4,1。 时间限制&#…

2024北京国际物联网展览会(物联网展)物物相连,万物互联

2024北京国际物联网展览会&#xff08;物联网展&#xff09; 2024 Beijing international IOT Expo 时间:2024年6月28-30日 地点:北京亦创国际会展中心 前言 随着信息技术的不断发展&#xff0c;物联网已成为当前全球信息社会发展的主要趋势之一。物联网技术正在逐渐渗透到人…

同创永益成为英迈首家签约生态伙伴

日前&#xff0c;同创永益已和英迈签署生态运营战略协议&#xff0c;并正式成为英迈全新打造的GTM生态圈的首位签约合作伙伴。双方将携手对“同创数字韧性平台”产品进行一站式联合解决方案的持续整合&#xff0c;并将大力推动该联合解决方案在市场上的进一步拓展。 云原生时代…

小白自学笔记—网络安全(黑客技术)

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

Avalonia常用小控件Menu

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 样式预览&#xff1a; axaml代码 &#xff1a; <UserControl xmlns"https://github.com/avalo…

元宇宙赛道加速破圈,UM Company区块链游戏抓住全球发展新风口

当下全球游戏市场仍然具备较大的增长空间。据机构预测&#xff0c;至2025年全球移动游戏市场规模将达1606亿美元&#xff0c;对应2020-2025年复合增长率11&#xff05;。 与此同时&#xff0c;随着元宇宙概念持续升温&#xff0c;全球多家互联网巨头纷纷入场。行业分析平台New…

微软已终止支持Windows Server 2012 2012 R2

微软已于2023年10月10日终止支持Windows Server 2012 和 Windows Server 2012 R2&#xff0c;在此日期后&#xff0c;这些产品将不再接收安全更新、非安全更新、Bug 修复、技术支持或联机技术内容更新。 如果无法升级到下一个版本&#xff0c;则需要使用扩展安全更新 (ESU) 长达…

三菱FX5U系列PLC更改运动轴脉冲输出方向控制点的具体方法和步骤详解

三菱FX5U系列PLC更改运动轴脉冲输出方向控制点的具体方法和步骤详解 本例中将轴1的脉冲方向控制点Y4更改为Y16 具体方法可参考以下步骤: 如下图所示,将原来Y4的接线拆下,重新接到Y16端子上(为了安全,建议断电后进行) 将网线一端插到PLC网口,一端连接到电脑上(电脑上无网…

OpenCV4(C++)—— 图像噪声与图像滤波

文章目录 前言一、图像噪声1、椒盐噪声2、高斯噪声 二、图像滤波 前言 图像噪声是图像在摄取或传输时所受的随机信号干扰&#xff0c;表现为图像信息或者像素亮度的随机变化。目前最常见的两者噪声是椒盐噪声和高斯噪声。 一、图像噪声 1、椒盐噪声 椒盐噪声又被称作脉冲噪声…

中科大 Epc 综合英语备考 之 单词篇

Lesson 1 ENGLISH — A WORLD LANGUAGE单词表课后练习同义替换选词填空 Lesson 2 MY LACK OF GUMPTION单词表课后练习同义替换选词填空 Lesson 3 WINNING ISNT EVERYTHING单词表课后练习同义替换选词填空 Lesson 5 PRIVATE SPACE单词表课后练习同义替换选词填空 Lesson 9 THE M…

【常见错误】SVN提交项目时,出现了这样的提示:“XXX“ is scheduled for addition, but is missing。

SVN提交项目时&#xff0c;出现了这样的提示&#xff1a;“XXX“ is scheduled for addition, but is missing。 原因是&#xff1a;之前用SVN提交过的文件/文件夹&#xff0c;被标记为"addition"状态&#xff0c;等待被加入到仓库。虽然你把这个文件删除了&#xf…

centos / oracle Linux 常用运维命令讲解

目录 1.shell linux常用目录&#xff1a; 2.命令格式 3.man 帮助 4.提示符 5.echo输出字符串或变量值 6.date显示及设置系统的时间或日期 7.重启系统 8.关闭系统 9.登录注销 10.wget 下载文件 11.ps 查看系统的进程 12.top动态监视进程信息和系统负载等信息 13.l…

OpenAI科学家谈GPT-4的潜力与挑战

OpenAI Research Scientist Hyung Won Chung 在首尔国立大学发表的一场演讲。 模型足够大&#xff0c;某些能力才会显现&#xff0c;GPT-4 即将超越拐点并在其能力上实现显着跳跃。GPT-3 和 GPT-4 之间的能力仍然存在显着差距&#xff0c;并且尝试弥合与当前模型的差距可能是无…

NPU上PyTorch模型调优问题案例

在昇腾AI处理器上训练PyTorch框架模型时&#xff0c;可能由于算子在CPU上的下发速度、动态shape等问题&#xff0c;导致性能降低&#xff0c;那么本期就分享几个关于PyTorch模型调优的典型案例&#xff0c;给出调优思路及具体的调优方法&#xff1a; 1、NPU亲和优化器替换调优…

压力测试+接口测试

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因 为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是…

2023 年度,最受人欢迎的低代码开发平台大盘点

在介绍之前&#xff0c;先给大家讲解一下&#xff0c;当前低代码领域主要发展的2个方向 一、低代码开发平台 面向大中小型企业&#xff0c;写少了代码&#xff0c;提供一系列低代码引擎&#xff0c;表单设计器、流程设计器、大屏设计器&#xff0c;支持通过可视化组件少量代码…

配置OSPF包文分析和验证

.2.2实验2&#xff1a;配置OSPF包文分析和验证 [1] 实验目的 通过抓包分析OSPF的包文实现OSPF区域认证的配置 实验拓扑 实验拓扑图如图1-3所示。 图1-3 配置OSPF包文分析和验证 实验步骤 IP地址的配置、运行OSPF的步骤与实验1相同&#xff0c;此处略。[2] 在R1的g0/0/0抓包…

配电室远程运维平台:现代化的电力管理解决方案

随着科技进步和电力行业的发展&#xff0c;配电室正在逐渐实现远程运维&#xff0c;这一创新技术趋势带来的改变&#xff0c;无疑提升了电力配送的效率和精确性。 力安科技电易云配电室远程运维平台&#xff0c;通过在高低压配电柜、变压器、一级/二级配电柜、配电箱、电缆…

今天面试招了个18K的人,从字节出来的果然都有两把刷子···

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不…

[小林coding]4.1TCP三次握手四次挥手笔记_1012

1.tcp头部格式&#xff1a; 序列号&#xff1a;用来解决网络包收发的顺序问题 确认应答号&#xff1a;解决丢包问题&#xff08;一般都是1&#xff09; 2.建立一个 TCP 连接是需要客户端与服务端达成上述三个信息的共识 Socket&#xff1a;由 IP 地址和端口号组成&#xff08;…