beautifulsoup中的复合标记

2024-09-30 01:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下:

<tr>
<td><b>Item 1</b></td>
<td>Name 1</td>
<td><i><b>Price 1</b></i></td>
</tr>
<tr>
<td><b>Item 2</b></td>
<td>Name 2</td>
<td><i><b>Price 2</b></i></td>
</tr>
<tr>
<td><b>Item 3</b></td>
<td>Name 3</td>
<td><i><b>Price 3</b></i></td>
</tr>

如何在BeautifulSoup的find\u all语法中获得Price 1、Price 2、Price 3的值,并使用上述多个标记(<td><i><b>)?。谢谢你的解决方案

我试过这个:

import os import sys from bs4 import BeautifulSoup baca = open("asal.html", "r").read() soup = BeautifulSoup(baca, "html.parser") saring = soup.find_all(['td','b']) for a in saring: print a.text

Tags: 代码nameimporthtml语法allfinditem
1条回答
网友
1楼 · 发布于 2024-09-30 01:22:53

您可以使用CSS selector via ^{}方法基于祖先层次结构选择元素,即选择b,其中父级为i,祖级为td

>>> raw = '''<div>
... <tr>
... <td><b>Item 1</b></td>
... <td>Name 1</td>
... <td><i><b>Price 1</b></i></td>
... </tr>
... <tr>
... <td><b>Item 2</b></td>
... <td>Name 2</td>
... <td><i><b>Price 2</b></i></td>
... </tr>
... <tr>
... <td><b>Item 3</b></td>
... <td>Name 3</td>
... <td><i><b>Price 3</b></i></td>
... </tr>
... </div>'''
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(raw, "lxml")
>>> soup.select("td > i > b")
[<b>Price 1</b>, <b>Price 2</b>, <b>Price 3</b>]

相关问题 更多 >

    热门问题