如何从SCP维基爬虫获取的href标签中提取URL后缀?
解决SCP维基爬虫提取文章链接的问题
直接修改初始代码提取href(最优方案)
你当前用find_all获取的是完整<a>标签对象,无需后续二次提取,直接在获取阶段就提取href属性即可,修改代码如下:
import requests import lxml from bs4 import BeautifulSoup import re def searchSCP(x): url = str(SCoutP(x)) c = requests.get(url) crawl = BeautifulSoup(c.content, 'lxml') # 定位符合条件的a标签,直接提取href属性存入列表 ref_tags = crawl.find_all('a', text=re.compile("SCP-"), href=re.compile("scp-")) ref = [tag['href'] for tag in ref_tags] param = "SCP-" + str(SkateP(x)) # 过滤指向当前文章的链接,用列表推导式更安全(避免遍历原列表时删除元素导致的遗漏) ref = [link for link in ref if param not in link.upper()] if ref: print(ref)
对已有的标签列表提取href(保留原有获取逻辑的情况)
如果已经拿到包含<a>标签的ref列表,可遍历每个标签对象提取href:
# 假设ref是已获取的a标签列表 href_list = [tag['href'] for tag in ref] # 过滤当前文章链接 param = "SCP-" + str(SkateP(x)) filtered_href = [link for link in href_list if param not in link.upper()] print(filtered_href)
关键说明
- BeautifulSoup的
find_all返回Tag对象集合,每个Tag可通过['属性名']直接获取对应属性值 - 原代码中遍历列表并
remove元素易出现遍历遗漏,改用列表推导式过滤更稳定 - 转大写后判断匹配,可避免大小写差异导致的过滤失效
内容的提问来源于stack exchange,提问作者MrPigsWorth
相关产品推荐
相关产品推荐

