如何在Python HTML Parser爬虫中过滤含指定关键词的URL
实现HTML Parser中直接过滤含特定关键词的URL
你只需要在生成完整URL后,添加关键词判断逻辑,符合条件的URL才加入集合即可。推荐把关键词做成可配置参数,后续修改更灵活,具体修改如下:
修改要点
- 在
LinkFinder的初始化方法中新增keyword参数,用来指定要筛选的关键词 - 在生成拼接后的URL后,增加判断:只有当URL包含指定关键词时,才将其添加到
self.links集合中
修改后的完整代码
from html.parser import HTMLParser from urllib import parse class LinkFinder(HTMLParser): def __init__(self, base_url, page_url, keyword): super().__init__() self.base_url = base_url self.page_url = page_url self.links = set() self.keyword = keyword # 新增:存储要过滤的关键词 def handle_starttag(self, tag, attrs): if tag == 'a': for (attribute, value) in attrs: if attribute == 'href': url = parse.urljoin(self.base_url, value) # 新增:判断URL是否包含指定关键词,符合条件才添加 if self.keyword in url: self.links.add(url) def page_links(self): return self.links def error(self, message): pass
使用示例
实例化LinkFinder时传入要过滤的关键词即可,比如要抓取包含blog的URL:
finder = LinkFinder("https://example.com", "/", "blog") # 后续调用feed等操作...
如果需要支持多个关键词,可以把keyword改成列表,再将判断逻辑调整为any(key in url for key in self.keywords),按需修改即可。
内容的提问来源于stack exchange,提问作者Data_Science_Mick
相关产品推荐
相关产品推荐

