使用HTMLSession爬取仅获1条H4新闻,如何获取Top10新闻?
问题分析
你的代码存在两个核心问题:
- 直接遍历所有
ul标签,页面内存在大量无关ul,多数不包含目标H4标签,仅第一个匹配的ul输出了内容 - 即便找到目标
ul,你只提取了每个ul下的第一个H4,而Top10新闻是该ul下多个li项中的H4内容
修复后的代码
from requests_html import HTMLSession session = HTMLSession() url = "https://www.bleepingcomputer.com/#nlatest" r = session.get(url) r.html.render(sleep=4, scrolldown=5) # 精准定位存放Top10新闻的ul容器 target_ul = r.html.find('ul.latest-news', first=True) if target_ul: # 获取容器内所有新闻项 news_items = target_ul.find('li') # 遍历提取最多10条新闻标题 for idx, item in enumerate(news_items[:10], 1): try: title = item.find('h4', first=True).text print(f"{idx}. {title}") except AttributeError: continue
关键修改说明
- 精准定位容器:通过
ul.latest-news直接锁定目标新闻列表,避免遍历无关ul - 遍历新闻项:目标
ul下的每个li对应一条新闻,需遍历所有li而非ul本身 - 控制数量:用
news_items[:10]确保最多提取10条新闻 - 优化异常处理:将宽泛的
except改为捕获AttributeError,仅处理找不到H4标签的情况,避免隐藏其他错误
内容的提问来源于stack exchange,提问作者Akshita Kapoor
相关产品推荐
相关产品推荐

