Python筛选含指定关键词的网页链接失败问题求助
问题原因与修正方案
你代码的核心错误是误将BeautifulSoup的<a>标签对象当作链接字符串进行判断。
在你的筛选代码中,link是BeautifulSoup解析出的<a>标签实例,而非href属性对应的链接地址。word in link实际上是在检查关键词是否存在于标签的HTML结构(比如标签文本、其他属性)中,而非我们需要的链接URL里,这就导致明明关键词存在于链接中,却匹配不到。
修正后的代码
方式一:常规循环写法
list_of_keywords = ['word1', 'word2', 'word3'] links = [] for link in soup.findAll('a'): href = link.get('href') # 先排除空链接,再判断关键词是否存在于链接中 if href and any(word in href for word in list_of_keywords): links.append(href)
方式二:列表推导式(更简洁)
list_of_keywords = ['word1', 'word2', 'word3'] links = [ link.get('href') for link in soup.findAll('a') if link.get('href') and any(word in link.get('href') for word in list_of_keywords) ]
额外注意事项
- 增加
href非空判断,避免None值混入结果或引发判断错误 - 如果需要忽略大小写匹配,可以将链接和关键词统一转为小写:
if href and any(word.lower() in href.lower() for word in list_of_keywords):
内容的提问来源于stack exchange,提问作者rogueakula
相关产品推荐
相关产品推荐

