我正在创建一个模板,用于从网站中提取新闻以进行语义分析。我刚刚开始学习使用 bs4 和 selenium 进行网页抓取。
我可以实现从每个新闻中分离并获取标题、副标题、帖子 ID 和文本。
title = soup.find_all('h1')[1].text
subtitle = soup.find_all('h2')[0].text
news_id = (soup.find("article"))["id"]
text = article(corpus) >#function and argument defined earlier
我想我可以提取日期,但我使用的函数 (soup.find_all("span")[39].text
) 并不是所有新闻的好模式。
我需要一个可以从以下内容中提取日期和作者的函数:
<span class="author">
Por <strong><span>Djenifer Dias</span></strong> <span>
8 jun 2021, 12h15 </span>
</span>,
<span>Djenifer Dias</span>,
<span>
8 jun 2021, 12h15 </span>
我需要获取作者“Djenifer Dias”和日期“2021 年 6 月 8 日,12 点 15 分 ”。
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
要从 HTML 中获取作者姓名和日期,您可以使用以下示例:
from bs4 import BeautifulSoup
html_doc = """
<span class="author">
Por <strong><span>Djenifer Dias</span></strong> <span>
8 jun 2021, 12h15 </span>
</span>,
<span>Djenifer Dias</span>,
<span>
8 jun 2021, 12h15 </span>
"""
soup = BeautifulSoup(html_doc, "html.parser")
author = soup.find(class_="author").span.get_text(strip=True)
date = soup.find(class_="author").find_all("span")[-1].get_text(strip=True)
print(author)
print(date)
打印:
Djenifer Dias
8 jun 2021, 12h15
或者使用 CSS 选择器:
author = soup.select_one(".author > strong").get_text(strip=True)
date = soup.select_one(".author > span").get_text(strip=True)