【发布时间】:2026-01-11 21:50:01
【问题描述】:
我能够从网页中抓取大量数据,但我正在努力从具有完全相同属性和值的小节中提取特定内容。这是html:
<li class="highlight">
Relationship Issues
</li>
<li class="highlight">
Depression
</li>
<li class="highlight">
Spirituality
</li>
<li class="">
ADHD
</li>
<li class="">
Alcohol Use
</li>
<li class="">
Anger Management
</li>
使用该 html 作为参考,我有以下内容:
import requests
from bs4 import BeautifulSoup
import html5lib
import re
headers = {'User-Agent': 'Mozilla/5.0'}
URL = "website.com"
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html5lib')
specialties = soup.find_all('div', {'class': 'spec-list attributes-top'})
for x in specialties:
Specialty_1 = x.find('li', {'class': 'highlight'}).text
Specialty_2 = x.find('li', {'class': 'highlight'}).text
Specialty_3 = x.find('li', {'class': 'highlight'}).text
所以理想的结果是:Specialty_1 = 关系问题; Specialty_2 = 抑郁症; Specialty_3 = 灵性
与
问题 1 = 多动症;问题_2 = 饮酒; Issue_3 = 愤怒管理
不胜感激!
【问题讨论】:
-
我认为我们需要看到更多的 html。目前,您只需选择第一个 li(如果存在)3 次。您真的想要对 li 元素列表进行循环。可以分享一下网址吗?由于当前设置了循环,您还将覆盖循环内的变量。
-
我遇到的问题是后面有几个 li 有我想要的没有值的数据。我该如何解决?
-
您要求提供这 3 个值。我已将其放在答案的下半部分。请问您还需要从那个页面获得什么?#
-
@QHarr 我添加了一些带有 li 属性但没有值的 HTML,您如何识别这些?您的代码非常适合 li.highlight
标签: python html web-scraping beautifulsoup html5lib