如何用BeautifulSoup提取Hacker News前30篇文章的有效链接?
提取Hacker News前30篇文章链接的解决方案
你的问题出在抓取了页面所有<a>标签,包括导航栏、投票按钮、用户主页、隐藏按钮等无关链接。想要精准获取文章链接,需要利用Hacker News的页面结构:文章标题都包裹在class="titleline"的<span>标签内,其中的第一个<a>标签就是文章的目标链接。
修正后的代码
from bs4 import BeautifulSoup import requests response = requests.get("https://news.ycombinator.com") yc_webpage = response.text soup = BeautifulSoup(yc_webpage, "lxml") # 获取所有标题容器 title_spans = soup.find_all(name="span", class_="titleline") article_links = [] # 遍历每个标题容器,提取文章链接 for span in title_spans[:30]: # 限制只取前30篇 article_a = span.find("a") if article_a and "href" in article_a.attrs: article_links.append(article_a["href"]) print(article_links)
代码说明
- 先定位到所有
titleline类的span标签,这些是文章标题的容器,避免抓取无关区域的链接 - 对每个span标签,只提取其中的
<a>标签,这才是文章的跳转链接 - 通过
[:30]切片,确保只获取前30篇文章的链接 - 增加了简单的判断,避免因标签结构异常导致的报错
内容的提问来源于stack exchange,提问作者luna28blue
相关产品推荐
相关产品推荐

