【发布时间】:2023-04-08 17:30:01
【问题描述】:
我是 BeautifulSoup 的新手。我正在使用 Python 和 bs 进行一些网络抓取,并且我有两个具有相同类名的段落。 HTML如下:
<p class='metadata'>Wed 1 Jan 2020 00:01 GMT</p><p class='metadata'>Category: <span>UK-News</span></p>
我正在尝试仅获取跨度标签 (UK-News) 中的类别名称。我正在使用循环,因为我正在抓取多篇文章。以下是我尝试过的一些事情:
articles = soup.find_all('div', {'class' : 'article'})
for item in articles:
#category = item.find('span') - prints out the same date
#category = item.find('p', {'class' : 'metadata'}).text - prints every span tag in html
#category = item.find('p', {'class' : 'metadata'}) - prints only the dates
category = soup.select_one('span').get_text #prints out the same category name
print(category)
这可能是一个小修复,但它真的让我很头疼,因为我觉得我已经尝试了所有方法。提前致谢。
【问题讨论】:
-
articles来自哪里,它是什么样的?还是只是一个 URL 列表? -
尝试使用 CSS 选择器,例如
soup.select('p.metadata > span')。 -
@Boris 哎呀,忘了包括那个。将更新代码。每篇文章都有自己的 div,所以我正在搜索每个文章 div 中的标签。我尝试了 css 选择器,它正在工作,但打印出每个类别名称 51 次(有 51 篇文章)。不过,我会对此进行更多的研究,谢谢!
标签: python web-scraping beautifulsoup