我需要从内部单词与我的查询单词匹配的标记中获取特定属性值。例如,考虑一个目标html -
<span data-attr="something" attr1="" ><i>other_word</i></span>
<span data-attr="required" attr1="" ><i>word_to_match</i></span>
<span data-attr="something1" attr1="" ><i>some_other_word</i></span>
现在,我需要获得 &#39;内容词(在本例中为 word_to_match )与我的查询词匹配的标记的 data-attr 属性值。
问题在于,我写的正则表达式也在返回其他跨度。在这种情况下,我还没能做出非贪婪的正则表达式。
如果它有帮助,我会在python中这样做,并且请不要在这里使用正则表达式&#34;的解决方案。
答案 0 :(得分:0)
如何使用正则表达式和输出组替换字符串(javascript语法,但我希望python具有类似的功能)?
str.replace(/data-attr="([^"]*)"[^>]*>[^<]*<i>word_to_match</, '$1')
答案 1 :(得分:0)
使用正则表达式解析网站并不是一个好主意。你可以使用BeautifulSoup。它可靠而有效:
>>>from bs4 import BeautifulSoup
>>>soup = BeautifulSoup("""
<span data-attr="something" attr1="" ><i>other_word</i></span>
<span data-attr="required" attr1="" ><i>word_to_match</i></span>
<span data-attr="something1" attr1="" ><i>some_other_word</i></span>""")
>>>[x.attrs['data-attr'] for x in soup.select('span') if 'word_to_match' in str(x)][0]
'required'