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

简单的爬虫

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

原博客: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.rhkb.cn/news/162468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Python抓取PDF文件并自动下载到本地

目录 一、导入必要的库 二、发送HTTP请求并获取PDF文件内容 三、将PDF文件内容写入到本地文件中 四、完整代码示例 五、注意事项 六、错误处理和异常处理 七、进一步优化 总结 在Python中&#xff0c;抓取PDF文件并自动下载到本地需要使用几个不同的库。首先&#xff0…

工业交换机的应用场景

在选择工业交换机的时候&#xff0c;很多人会疑惑自己的场景是否适用工业交换机&#xff0c;工业交换机广泛应用于以下场景&#xff0c;大家可以参考了解 1. 工业自动化&#xff1a;工业交换机用于连接各种工业设备&#xff0c;如PLC&#xff08;可编程逻辑控制器&#xff09;、…

MSQL系列(四) Mysql实战-索引 Explain实战

Mysql实战-索引 Explain实战 前面我们讲解了索引的存储结构&#xff0c;我们知道了BTree的索引结构&#xff0c;也了解了索引最左侧匹配原则&#xff0c;到底最左侧匹配原则在我们的项目中有什么用&#xff1f;或者说有什么影响&#xff1f;今天我们来实战操作一下&#xff0c…

IDEA如何拉取gitee项目?

1.登录gitee 说明&#xff1a;打开idea&#xff0c;在设置上面搜索框输入gitee&#xff0c;然后登录gitee注册的账号。 2. 创建gitee仓库 说明&#xff1a;创建idea中的gitee仓库。 3.寻找项目文件 说明&#xff1a;为需要添加gitee仓库的项目进行添加。 4.项目右键 说明&a…

百度地图高级进阶开发:圆形区域周边搜索地图监听事件(覆盖物重叠显示层级\图像标注监听事件、setZIndex和setTop方法)

百度地图API 使用百度地图API添加多覆盖物渲染时&#xff0c;会出现覆盖物被相互覆盖而导致都无法触发它们自己的监听&#xff1b;在百度地图API里&#xff0c;map的z-index为0&#xff0c;但是触发任意覆盖物的监听如click时也必定会触发map的监听&#xff1b; 项目需求 在…

L2-030 冰岛人

2018年世界杯&#xff0c;冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”&#xff08;son&#xff09;&#xff0c;于是有网友科普如下&#xff1a; 冰岛人沿用的是维京人古老的父系姓制&#xff0c;孩子的姓等于父亲的名加后缀&#x…

AI系统ChatGPT源码+详细搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

基于梯度优化的BP神经网络(分类应用) - 附代码

基于梯度优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于梯度优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.梯度优化BP神经网络3.1 BP神经网络参数设置3.2 梯度算法应用 4.测试结果&#xff1a;5.M…

一、初识 Elasticsearch:概念,安装,设置分词器

文章目录 01、初识 Elasticsearch正向索引和倒排索引索引MySQL与ES的概念映射安装ES分词器分词器的设置结束语 01、初识 Elasticsearch 本次ES基于&#xff1a;7.12.1 版本 学习资源为&#xff1a;https://www.bilibili.com/video/BV1Gh411j7d6 什么是ES&#xff08;Elastics…

解决jmeter软件显示为英文、返回数据乱码、设置编码格式的问题

一.jmeter软件每次打开都需要手动切换中文 1.修改配置文件&#xff0c;可以把jmeter设置成中文&#xff1a; 2.打开jmeter.properties配置文件&#xff0c;修改languagezh_CN 二.返回数据乱码 改配置文件 进入Jmeter的bin目录下&#xff0c;找到jmeter.properties文件&#…

Java构建Web项目

对无底线服务型的系统&#xff0c;业务代码和界面代码脚本化是及其重要的。一是脚本化能确保部署本地就是再用的代码&#xff0c;不存在为每个项目管理代码的问题。然后脚本化不需要人为编译和投放程序库。极大的简化维护难度和成本。能不能脚本化直接决定了能否全面铺开运维&a…

【爬虫教程】2023最详细的爬虫入门教程~

初识爬虫 学习爬虫之前&#xff0c;我们首先得了解什么是爬虫。 来自于百度百科的解释&#xff1a; 网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&a…

React之受控组件和非受控组件以及高阶组件

一、受控组件 受控组件&#xff0c;简单来讲&#xff0c;就是受我们控制的组件&#xff0c;组件的状态全程响应外部数据 举个简单的例子&#xff1a; class TestComponent extends React.Component {constructor (props) {super(props);this.state { username: lindaidai }…

Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部供…

轻量级超分网络:Edge-oriented Convolution Block for Real-timeMM21_ECBSR 和 eSR

文章目录 ECBSR&#xff08;Edge-oriented Convolution Block for Real-timeMM21_ECBSR&#xff09;1. 作者目的是开发一个高效的适合移动端的超分网络。2. 作者决定使用plain net &#xff0c;但是效果不好&#xff0c;因此利用重参数化方法&#xff0c;丰富特征表示。3. re-p…

openssl生成SM2公私钥对命令详解

&#xff08;1&#xff09;获得openssl支持椭圆曲线算法列表 命令&#xff1a;openssl ecparam -list_curves 返回结果&#xff1a; secp112r1 : SECG/WTLS curve over a 112 bit prime field secp112r2 : SECG curve over a 112 bit prime field secp128r1 : SE…

工程云平台源码 建筑工地劳务实名制、危大工程监管平台源码

智慧工地的核心是数字化&#xff0c;它通过传感器、监控设备、智能终端等技术手段&#xff0c;实现对工地各个环节的实时数据采集和传输&#xff0c;如环境温度、湿度、噪音等数据信息&#xff0c;将数据汇集到云端进行处理和分析&#xff0c;生成各种报表、图表和预警信息&…

[备忘]WindowsLinux上查看端口被什么进程占用|端口占用

Windows上 查看端口占用&#xff1a; netstat -aon|findstr <端口号> 通过进程ID查询进程信息 tasklist | findstr <上一步查出来的进程号> 图例&#xff1a; Linux 上 查看端口占用&#xff1a; netstat -tuln | grep <端口号> lsof -i:<端口号&…

安徽怀宁领导一行莅临蓝海彤翔集团参观考察

10月17日上午&#xff0c;中共怀宁县委书记余学峰&#xff0c;怀宁县政府副县长谭宪锋、怀宁县委办主任刘劲松、怀宁县招商中心副主任余飞、怀宁县委办四级主任科员彭俊等领导一行莅临蓝海彤翔集团参观考察&#xff0c;集团总裁鲁永泉、集团CTO穆凯辉接待了考察团一行。 考察团…

Flutter笔记:发布一个Flutter头像模块 easy_avatar

Flutter笔记 发布一个头像Flutter模块 easy_avatar 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/1339…