【发布时间】:2020-07-13 22:05:00
【问题描述】:
我有一堆看起来像这样的 html 数据:
<div id="productplacementlist_1" class="c-channel-placement-content">
<h3 class="c-subheading-6">TITLE1 EXAMPLE</h3>
“div id”对于每个类都是唯一的,“_”后面的值更改为 2、3、4 等。我想要每个 h3 类的内容(字符串、文本)。所以我使用:
start = soup.find("h3").string
这对我很有用,但仅适用于第一个“h3”项目 - 当我打印出来时,我会得到内容,例如在这种情况下:
输出:
"TITLE 1 EXAMPLE"
我想保存来自 h3 标签的 191 个“字符串”,每个字符串都有一个值。所以“开始”是我的起点,从那里,我跳到下一个项目:
s2 = start.find_next("h3").string
这很好,我得到下一个项目。但我认为这不是为 191 个项目手动创建新“起点”(如此处的 s2)的最佳方式。
所以我只想要一个循环,从“开始”开始,然后跳转到 s2,将此(自动在后台)保存为 s3,然后跳转到下一个项目,依此类推 - 循环应该在最后一个 h3 处停止标记。
或
另一种方法是一次搜索获取所有h3标签,使用以下命令:
search2 = soup.find_all("h3", {"class": "c-subheading-6"})
输出:
<h3 class="c-subheading-6>"TITLE 1 EXAMPLE</h3>
<h3 class="c-subheading-6>"TITLE 2 EXAMPLE</h3>
这也可以,但我需要找到一种方法将每个 h3 类的字符串(仅文本)存储在单个值中,而不是列表中。
【问题讨论】:
-
您是否在问如何将一堆不同的字符串分配给一个变量而无需多次写入
var_name = mystring?特别是如果您事先不知道可能有多少? -
h3s = [h3.string for h3 in soup.find_all("h3", {"class": "c-subheading-6"})] -
这也是等价的——
h3s = [h3.string for h3 in soup.find_all("h3", "class_="c-subheading-6")]
标签: python beautifulsoup