使用Python爬取网站时,如何提取无class或id属性的<a>标签内文本?
嘿,这个需求其实很常见,用Python里的BeautifulSoup库就能轻松搞定!我给你两种实用的写法:
方法一:分步定位元素
先找到带d-inline类的<div>,再从中提取内部的<a>标签文本,逻辑清晰易懂:
from bs4 import BeautifulSoup # 把你的HTML内容存到变量里(实际爬取时可以用requests获取页面内容) html = '''<div class="d-inline"> <img class="team-img" src="https://cdn.fifacm.com/content/media/imgs/fifa22/teams/52/l73.png?v=10"> <a href="/22/team/73/paris-saint-germain"> Paris Saint-Germain </a> </div>''' # 解析HTML soup = BeautifulSoup(html, 'html.parser') # 定位目标div target_div = soup.find('div', class_='d-inline') if target_div: # 找到div下的a标签,提取文本并去除前后空格 team_name = target_div.find('a').get_text(strip=True) print(team_name) # 输出:Paris Saint-Germain
方法二:用CSS选择器一步到位
如果想更简洁,可以直接用CSS选择器定位,div.d-inline > a表示选择class为d-inline的div的直接子元素a标签,完美匹配你的结构:
from bs4 import BeautifulSoup html = '''<div class="d-inline"> <img class="team-img" src="https://cdn.fifacm.com/content/media/imgs/fifa22/teams/52/l73.png?v=10"> <a href="/22/team/73/paris-saint-germain"> Paris Saint-Germain </a> </div>''' soup = BeautifulSoup(html, 'html.parser') # 直接用CSS选择器定位并提取文本 team_name = soup.select_one('div.d-inline > a').get_text(strip=True) print(team_name) # 输出:Paris Saint-Germain
小提示
- 实际爬取时,记得先用
requests库获取目标页面的HTML内容,再传给BeautifulSoup解析。 - 如果页面中有多个符合条件的元素,可以用
soup.select('div.d-inline > a')获取所有匹配的a标签,然后循环提取文本。
内容的提问来源于stack exchange,提问作者NicolaIta
相关产品推荐
相关产品推荐

