【问题标题】:BeautifulSoup4 - Search for specific h3 strings and store themBeautifulSoup4 - 搜索特定的 h3 字符串并存储它们
【发布时间】: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"})]
  • 这能回答你的问题吗? How do I create a variable number of variables?
  • 这也是等价的——h3s = [h3.string for h3 in soup.find_all("h3", "class_="c-subheading-6")]

标签: python beautifulsoup


【解决方案1】:

解决方案:

h3s = [h3.string for h3 in soup.find_all("h3", {"class": "c-subheading-6"})] – 

来自codedawi

非常感谢,一行代码,我用 10 多行代码尝试了 10.000 种不同的东西。非常感谢!

@wwii

不是直接的,但将来会有所帮助 (How do I create a variable number of variables?)

评论:您是在问如何将一堆不同的字符串分配给一个变量,而无需多次编写 var_name = mystring ?特别是如果您事先不知道可能有多少? - 是的,很高兴知道这一点。

也谢谢你!!你们都帮了我很大的忙:)

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多