Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式-尝试在html结果中查找名称_Python_Regex - Fatal编程技术网

Python 正则表达式-尝试在html结果中查找名称

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 \

我试图从网页上获取某些数据。我正在使用Python和urllib来获取这些信息,但是这些数据被大量无用的信息所包围。我发现获得这些信息的最佳解决方案是使用正则表达式

我在下面的文本字符串中查找Huisman,D.J.的名字。本文本已经是全文的一部分:

\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'}的文本。谢谢,我不知道它也可以使用。我现在正在尝试使用它