Python 正则表达式-尝试在html结果中查找名称
我试图从网页上获取某些数据。我正在使用Python和urllib来获取这些信息,但是这些数据被大量无用的信息所包围。我发现获得这些信息的最佳解决方案是使用正则表达式 我在下面的文本字符串中查找Huisman,D.J.的名字。本文本已经是全文的一部分:Python 正则表达式-尝试在html结果中查找名称,python,regex,Python,Regex,我试图从网页上获取某些数据。我正在使用Python和urllib来获取这些信息,但是这些数据被大量无用的信息所包围。我发现获得这些信息的最佳解决方案是使用正则表达式 我在下面的文本字符串中查找Huisman,D.J.的名字。本文本已经是全文的一部分: \n \n \n</div>\n <div class="col-sm-8 col-md-6" id="id12">\n <div>\n \
\n \n \n</div>\n <div class="col-sm-8 col-md-6" id="id12">\n
<div>\n \n <div class="col-xs-11">\n
<div>Huisman, D.J.</div>\n</div>\n \n </div>\n
</div>\n \n </div>\n</div>\n </div><div
id="id13">\n <div id="id14">\n \n <div class="row">\n
<div class="col-sm-2 col-md-2">\n
我尝试以下两种表达方式。我尝试在div和/div之间选择的第一个表达式是:
r'<div>+(.*?)</div>'
但它失败了,因为在我希望它从中选择的div之前,已经有一个div。因此我得到:
['\\n \\n <div class="col-xs-11">\\n <div>Huisman, D.J.']
所以我想,也许我可以选择在/div之前存在的第一个资本,但它选择在第一个资本之后。代码和结果:
#expression:
r'[A-Z]+(.*?)</div>'
#result
['uisman, D.J.']
有人能帮我吗?使用HTML解析库,比如,而不是正则表达式。此外,示例中的HTML无效
from bs4 import BeautifulSoup
html = """
<div class="col-sm-8 col-md-6" id="id12">\n
<div>\n \n <div class="col-xs-11">\n
<div>Huisman, D.J.</div>\n</div>\n \n </div>\n
</div>\n \n </div>\n</div>\n </div><div
id="id13">\n <div id="id14">\n \n <div class="row">\n
<div class="col-sm-2 col-md-2">\n
"""
html = html.strip()
soup = BeautifulSoup(html, 'html.parser')
target_divs = soup.findAll('div', {'class': 'col-xs-11'})
for div in target_divs:
print div.get_text().strip()
>>> Huisman, D.J.
使用HTML解析库,如,而不是正则表达式。此外,示例中的HTML无效
from bs4 import BeautifulSoup
html = """
<div class="col-sm-8 col-md-6" id="id12">\n
<div>\n \n <div class="col-xs-11">\n
<div>Huisman, D.J.</div>\n</div>\n \n </div>\n
</div>\n \n </div>\n</div>\n </div><div
id="id13">\n <div id="id14">\n \n <div class="row">\n
<div class="col-sm-2 col-md-2">\n
"""
html = html.strip()
soup = BeautifulSoup(html, 'html.parser')
target_divs = soup.findAll('div', {'class': 'col-xs-11'})
for div in target_divs:
print div.get_text().strip()
>>> Huisman, D.J.
按照您的逻辑,我认为您可以使用r'[A-Z].*?'。我想你正在使用Python,我添加了标签。谢谢,我现在觉得自己完全是个傻瓜。也许我是。但这就是答案!您确定在其他输入中没有任何其他大写字母吗?对我来说,这听起来不是最终的解决方案。不要使用正则表达式来解析HTML。根据您的逻辑,我认为您可以使用r'[a-Z].*?'。我想你正在使用Python,我添加了标签。谢谢,我现在觉得自己完全是个傻瓜。也许我是。但这就是答案!您确定在其他输入中没有任何其他大写字母吗?对我来说,这听起来不像是一个最终的解决方案。不要使用正则表达式来解析HTMLNote,一般来说,这只会用{'class':'col-xs-11'}打印div中的文本。谢谢,我不知道它也可以使用。我现在正在尝试使用它注意,一般来说,这只会打印div中带有{'class':'col-xs-11'}的文本。谢谢,我不知道它也可以使用。我现在正在尝试使用它