如何用BeautifulSoup提取印度科技新闻页的新闻文章URL
解决方法
修改思路
印度快报的科技类新闻文章URL都包含路径 /article/technology/,我们只需要过滤出包含该路径的链接即可,同时处理相对链接转绝对链接的问题。
修改后的代码
import requests # 原代码遗漏了这个导入,必须加上 from bs4 import BeautifulSoup # 目标页面URL target_url = 'https://indianexpress.com/section/technology/' page = requests.get(target_url) bSoup = BeautifulSoup(page.content, 'html.parser') # 只提取包含新闻文章路径的链接 news_links = [] for link in bSoup.find_all('a', href=True): # 直接筛选带href属性的a标签,简化判断 href = link['href'] # 判断是否是科技类新闻文章链接 if '/article/technology/' in href: # 处理相对链接,转为完整URL if not href.startswith('http'): href = f"{target_url.split('/section/')[0]}{href}" news_links.append(href) # 去重(页面可能有重复链接) unique_news_links = list(set(news_links)) # 输出结果 for link in unique_news_links: print(link)
关键改动说明
- 补充了
requests库的导入,原代码缺失这一步会报错 - 使用
find_all('a', href=True)直接筛选带href属性的a标签,省去额外的if 'href' in link.attrs判断 - 增加路径判断
'/article/technology/' in href,精准过滤新闻文章链接 - 处理相对链接转绝对链接的逻辑,避免输出不完整的URL
- 增加去重处理,避免重复输出相同的新闻链接
内容的提问来源于stack exchange,提问作者psico
相关产品推荐
相关产品推荐

