Python网页爬虫Lambda函数OR多关键词匹配失效问题求助
问题根因
你写的('corona' or 'covid')属于语法逻辑错误:在Python中,or会直接返回第一个真值,非空字符串默认判定为真值,所以这个表达式的运算结果永远是排在前面的第一个字符串,相当于实际只判断了第一个关键词是否存在,第二个关键词完全不会生效。
修复方案
写法1:直接拆分判断(适合少量关键词)
把两个关键词的存在性判断分开用or连接即可,修改后的lambda代码如下:
covid_links = lambda tag: (getattr(tag, 'name', None) == 'a' and 'href' in tag.attrs and ('corona' in tag.get_text().lower() or 'covid' in tag.get_text().lower()))
修改后只要链接文本包含corona或者covid任意一个,都会被正确匹配到。
写法2:用any()批量判断(适合多关键词扩展)
如果后续需要新增关键词,建议把所有关键词放到列表里用any()判断,代码更简洁易维护:
covid_links = lambda tag: (getattr(tag, 'name', None) == 'a' and 'href' in tag.attrs and any(k in tag.get_text().lower() for k in ['corona', 'covid']))
内容的提问来源于stack exchange,提问作者John Conor
相关产品推荐
相关产品推荐

