BeautifulSoup4如何同时提取并打印文本内容与href属性?
解决方法:同时提取文章标题与对应URL
嘿,我来帮你搞定这个问题!你已经找对了目标h2标签的选择器,但文章的标题文本和URL其实都嵌套在h2标签内部的<a>元素里,咱们只需要再深入一步提取就行。
修正后的完整代码
from urllib.request import urlopen from bs4 import BeautifulSoup page = urlopen("https://cyware.com/cyber-security-news-articles") soup = BeautifulSoup(page, 'html5lib') # 定位到包含文章信息的h2标签集合 questions = soup.find_all('h2', {"class": "post post-v2 format-image news-card get-id"}) for h2 in questions: # 从每个h2中找到嵌套的<a>标签(这才是存储标题和链接的容器) link_tag = h2.find('a') if link_tag: # 增加判断,避免因无a标签导致报错 # 提取文章标题文本,strip=True去除多余空格和换行 article_title = link_tag.get_text(strip=True) # 提取文章对应的URL article_url = link_tag['href'] # 格式化打印结果 print(f"文章标题: {article_title}") print(f"文章链接: {article_url}") print("------------------------")
关键步骤解释
h2.find('a'):从每个目标h2标签中定位到内部的<a>元素,标题文本和链接都存放在这里。get_text(strip=True):高效提取标签内的纯文本,同时自动清理文本前后的空白字符,让输出更整洁。link_tag['href']:直接获取<a>标签的href属性值,也就是文章的完整链接。- 增加
if link_tag:判断:确保代码不会因为个别h2标签结构异常(比如没有嵌套a标签)而抛出错误,提升代码的健壮性。
内容的提问来源于stack exchange,提问作者sang oh
相关产品推荐
相关产品推荐

