gpt4 book ai didi

Python 正则表达式 : getting text from html elements with similar structure

转载 作者:行者123 更新时间:2023-12-01 08:59:05 25 4
gpt4 key购买 nike

出于某种原因,我需要使用正则表达式从网站中提取一些数据。数据具有类似的 HTML 结构,仅文本不同。为了简单起见,我这样展示:

p = '<div class="col-xs-6"><p>Gender:</p></div><div class="col-xs-6"><a href="/skor/herr">Herr</a>, <a href="/skor/dam">Dam</a></div>'
t = '<div class="col-xs-6"><p>Kategori:</p></div><div class="col-xs-6"><a href="/skor/kangor-boots">Boots</a></div>'
s = p + t

我只对“性别”感兴趣,这意味着我只想提取“Herr”和“Dam”。

到目前为止,我想出了两个选项 - 都不起作用:

m = re.findall("Gender.+?<div.+?>([\w ]+)<\/.+?<\/div>", s, re.DOTALL)

给出:

['先生']

我猜是因为它是非贪婪的

但是如果我让它变得贪婪:

re.findall("Gender.+?<div.+>([\w ]+)<\/.+?<\/div>", s, re.DOTALL)

它返回:

[' Boot ']

所以我正在努力弄清楚如何同时获得“Herr”和“Dam”,仅此而已?

最佳答案

您可以使用BeautifulSoup就这样

from bs4 import BeautifulSoup
a='<div class="col-xs-6"><p>Gender:</p></div><div class="col-xs-6"><a href="/skor/herr">Herr</a>, <a href="/skor/dam">Dam</a></div>'
soup = BeautifulSoup(a,"html.parser")
if 'Gender' in (str(soup.findAll('div'))):
for ana in soup.findAll('div'):
for i in ana.findAll('a'):
print(i.next_element)

输出:

Herr
Dam

我建议向 div 添加 name 属性,以便更容易确定正确的标签

p = '<div name="Gender" class="col-xs-6"><p>Gender:</p></div><div name="Gender" class="col-xs-6"><a href="/skor/herr">Herr</a>, <a href="/skor/dam">Dam</a></div>'
t = '<div class="col-xs-6"><p>Kategori:</p></div><div class="col-xs-6"><a href="/skor/kangor-boots">Boots</a></div>'
a = p + t

soup = BeautifulSoup(a,"html.parser")
for ana in soup.findAll('div',{"name":"Gender"}):
for i in ana.findAll('a'):
print(i.next_element)

输出:

 Herr
Dam

关于Python 正则表达式 : getting text from html elements with similar structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610930/

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