擅长:python、mysql、java
<p>对于bs4.7.1,您可以使用<code>:has</code>和<code>:contains</code>以特定文本字符串为目标并返回索引(注意,使用<code>select_one</code>将返回第一个匹配项)。如果要返回所有匹配项,请使用列表理解和<code>select</code></p>
<pre><code>import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://docs.python.org/3/library/re.html')
soup = bs(r.content, 'lxml')
index = soup.select_one('dl:has(.pre:contains("{m,n}"))')['id']
print(index)
</code></pre>
<hr/>
<p>任何版本:如果你想要一个字典,映射特殊字符到索引。感谢@zoe发现了我字典理解中的错误</p>
<pre><code>import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://docs.python.org/3/library/re.html')
soup = bs(r.content, 'lxml')
mappings = dict([(item['id'], [i.text for i in item.select('dt .pre')]) for item in soup.select('[id^="index-"]')])
indices = {i: k for (k, v) in mappings.items() for i in v}
</code></pre>