gpt4 book ai didi

python (汤): get nested data and get last item in a tag

转载 作者:行者123 更新时间:2023-11-28 22:36:28 25 4
gpt4 key购买 nike

所以我有一个看起来像这样的 html 文档:

<title>Speaker Name: Title of Talk | Subtitle | website.com</title>

... [Other Stuff]

<div class='meta'><span class='meta__item'>
Posted
<span class='meta__val'>
Jun 2006
</span></span><span class='meta__row'>
Rated
<span class='meta__val'>
Funny, Informative
</span></span></div>

<div class='talk-article__body talk-transcript__body'> TEXT

<data class='talk-transcript__para__time'>15:57</data>

我有 2200 个这样的文件,我希望将它们全部放入一个包含 AUTHOR、TITLE、DATE、LENGTH 和 TEXT 列的 CSV 文件中。现在,我拥有的不是最漂亮的代码,但它可以工作:

from bs4 import BeautifulSoup as soup

soup = soup(open(file).read(), "lxml")
at = soup.find("title").text
author = at[0:at.find(':')]
title = at[at.find(":")+1 : at.find("|") ]
text = soup.find("div", attrs={ "class" : "talk-article__body"}) # still needs cleaning
date =
length =

我这辈子都想不出如何得到日期:我怀疑它是 soupre 的组合,但我承认我无法理解这个组合。

长度的技巧是我想找到的是文件中最后一次出现的 <data class='talk-transcript__para__time'> 并获取该值。

最佳答案

你可以试试这个

date_spans = soup.find_all('span', {'class' : 'meta__val'})
date = [x.get_text().strip("\n\r") for x in date_spans if re.search(r"(?s)[A-Z][a-z]{2}\s+\d{4}", x.get_text().strip("\n\r"))][0]
print(date)
#date = re.findall(r"(?s)<span class=.*?>\s*([A-Z][a-z]{2}\s+\d{4})", str(soup))

length_data = soup.find_all('data', {'class' : 'talk-transcript__para__time'})
length = [x.get_text().strip("\n\r") for x in length_data if re.search(r"(?s)\d{2}:\d{2}", x.get_text().strip("\n\r"))][-1]
print(length)
#length = re.findall(r"(?s).*<data class=.*?>(.*)</data>", str(soup))

输出

Jun 2006
15:57

关于 python (汤): get nested data and get last item in a tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37404071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com