Python爬取新闻时无法输出链接,请求代码问题排查指导
爬虫无法获取新闻链接的问题排查与修复
问题原因
- 错误的属性调用:原代码中
items.absolute_links是无效的——items是<h3>标签的BeautifulSoup对象,该对象并没有absolute_links属性。实际新闻链接嵌套在h3内部的<a>标签中,需要先定位到这个a标签才能提取链接。 - 相对路径处理:页面返回的链接可能是相对路径,直接使用会无法正常访问,需要拼接成绝对URL。
修复后的代码
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin url = 'https://ca.finance.yahoo.com/industries/energy/' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') articles = soup.find_all('h3', class_="Mb(5px)") print(articles) for item in articles: # 定位h3内部的a标签 a_tag = item.find('a') if a_tag: title = a_tag.text.strip() # 获取相对链接并转为绝对URL relative_link = a_tag.get('href') absolute_link = urljoin(url, relative_link) print(title, absolute_link)
代码说明
- 使用
item.find('a')获取h3标签下的子a标签,确保能拿到链接所在的元素。 - 用
a_tag.get('href')提取a标签的href属性值(相对路径)。 - 通过
urljoin工具将相对路径与原页面URL拼接成可直接访问的绝对链接,避免路径无效的问题。
内容的提问来源于stack exchange,提问作者How To Be Human
相关产品推荐
相关产品推荐

