我正在尝试使用 beautiful soup 解析 python 中的以下 HTML 代码。我希望能够搜索标签内的文本,例如“颜色”并返回下一个标签的文本“Slate,mykonos”,并对下一个标签执行此操作,以便对于给定的文本类别我可以返回它的相应信息。
但是,我发现很难找到正确的代码来执行此操作。
<h2>Details</h2>
<div class="section-inner">
<div class="_UCu">
<h3 class="_mEu">General</h3>
<div class="_JDu">
<span class="_IDu">Color</span>
<span class="_KDu">Slate, mykonos</span>
</div>
</div>
<div class="_UCu">
<h3 class="_mEu">Carrying Case</h3>
<div class="_JDu">
<span class="_IDu">Type</span>
<span class="_KDu">Protective cover</span>
</div>
<div class="_JDu">
<span class="_IDu">Recommended Use</span>
<span class="_KDu">For cell phone</span>
</div>
<div class="_JDu">
<span class="_IDu">Protection</span>
<span class="_KDu">Impact protection</span>
</div>
<div class="_JDu">
<span class="_IDu">Cover Type</span>
<span class="_KDu">Back cover</span>
</div>
<div class="_JDu">
<span class="_IDu">Features</span>
<span class="_KDu">Camera lens cutout, hard shell, rubberized, port cut-outs, raised edges</span>
</div>
</div>
我使用以下代码来检索我的 div 标签
soup.find_all("div", "_JDu")
一旦我检索到标签,我就可以在其中导航,但我找不到正确的代码来查找一个标签内的文本并返回该标签后面的文本。
任何帮助都将非常感激,因为我是Python新手,而且我已经走进了死胡同。
最佳答案
您可以定义一个函数来返回您输入的键的值:
def get_txt(soup, key):
key_tag = soup.find('span', text=key).parent
return key_tag.find_all('span')[1].text
color = get_txt(soup, 'Color')
print('Color: ' + color)
features = get_txt(soup, 'Features')
print('Features: ' + features)
输出:
Color: Slate, mykonos
Features: Camera lens cutout, hard shell, rubberized, port cut-outs, raised edges
我希望这就是您正在寻找的内容。
说明:
soup.find('span', text=key)
返回 <span>
标签 text=key
。
.parent
返回当前<span>
的父标签标签。
示例:
何时 key='Color'
, soup.find('span', text=key).parent
将会返回
<div class="_JDu">
<span class="_IDu">Color</span>
<span class="_KDu">Slate, mykonos</span>
</div>
现在我们已将其存储在 key_tag
中。剩下的就是获取第二个 <span>
的文本,这就是 key_tag.find_all('span')[1].text
行确实如此。
关于python - 使用 beautifulsoup 搜索标签内的文本并返回标签中后面的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48200341/