如何使用Selenium定位SVG命名空间内图片并提取特工名称?
爬取特工名称实现方案
- 首先明确属性归属:你检查到的
<img>标签本身不携带href属性,你要找的href=/assets/agents/agent_name.webp是包裹该img标签的外层<a>链接标签的属性,不要直接在img节点上读取属性,否则会拿到空值。
具体实现步骤
- 定位目标元素
根据页面左侧角色区域的特征,先筛选到对应角色的img节点,再向上取它的父级a节点即可。
不同爬虫库的属性读取示例:
- BeautifulSoup 写法
from bs4 import BeautifulSoup soup = BeautifulSoup(页面源码文本, "html.parser") # 替换成你实际的img选择器,比如按class、alt属性、所在父容器定位 agent_img = soup.select_one("角色图片对应的CSS选择器") # 读取外层a标签的href属性值 agent_href = agent_img.parent.get("href")
- Scrapy/Parsel 写法
from parsel import Selector sel = Selector(text=页面源码文本) # 直接通过xpath取img父级a的href属性 agent_href = sel.xpath("匹配目标img的xpath规则/parent::a/@href").get()
- 提取特工名称
拿到的href值格式固定,不需要复杂解析,两种简单方法任选即可:
import re # 方法1:字符串切割,逻辑最简单性能最高 agent_name = agent_href.split("/")[-1].split(".")[0] # 方法2:正则匹配,路径格式有小变动时容错性更好 agent_name = re.search(r"/assets/agents/(.+?)\.webp", agent_href).group(1)
注意:不要直接从img的src属性里提取名称,大部分站点图片会做懒加载,img的src默认存的是占位图地址,和实际特工资源路径不对应,取外层a的href值结果才准确。
内容的提问来源于stack exchange,提问作者Le NAP
相关产品推荐
相关产品推荐

