如何使用 Beautiful Soup 网页抓取获取日期和作者?

时间:2021-06-14 00:26:44

标签: python web-scraping beautifulsoup

我正在创建一个模板,用于从网站中提取新闻以进行语义分析。我刚刚开始学习使用 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 分 ”。

有人可以帮我吗?

谢谢!

1 个答案:

答案 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)