如何从BeautifulSoup循环中的span标签获取文本

红外线

我正在尝试从重复以下HTML的网站上抓取一些信息:

<div class="product-details">
   <h2 class="product-name" title=" Weekly Roundup"> Weekly Roundup</h2>
   <span class="reference-number">REF NO. A1400.5</span>

我正在尝试刮擦产品名称和文本“ REF NO。A1400.5”。我需要在同一页面上抓取多个产品名称和参考编号,并将它们存储在列表中。我试过了:

product_new = []
product_ref = []

for caption in soup.find_all(class_='product-details'):
    product_name_new = caption.find(class_='product-name').text
    product_new.append(product_name_new)
    product_name_ref = (soup.select_one("span[class*=reference]").text)
    product_ref.append(product_name_ref)    
product_size_new = len(product_new)
print("Setup Complete", product_size_new)
print(*product_new,sep='\n')
print(*product_ref,sep='\n')

product_new可以正常工作并返回所有产品名称的列表,但是product_ref只包含REF NO. A1400.5重复的次数,该次数表示该类reference出现在网页上的次数我如何更改此设置以正确存储reference页面中每次出现的信息

谢谢!

安德烈·凯斯利(Andrej Kesely)

在您的代码中,product_name_ref始终是相同的值,因为您是从中进行选择soup,而不是从中进行选择caption

要获取所需的信息,可以使用以下示例:

from bs4 import BeautifulSoup


txt = '''
<div class="product-details">
   <h2 class="product-name" title=" Weekly Roundup"> Weekly Roundup</h2>
   <span class="reference-number">REF NO. A1400.5</span>
</div>

<div class="product-details">
   <h2 class="product-name" title=" Weekly Roundup"> Weekly Roundup 2</h2>
   <span class="reference-number">REF NO. A1400.5 2</span>
</div>
'''

soup = BeautifulSoup(txt, 'html.parser')

product_new = []
product_ref = []

for product in soup.select('div.product-details'):
    product_new.append(product.h2.get_text(strip=True))
    product_ref.append(product.select_one('span.reference-number').get_text(strip=True))

print(product_new)
print(product_ref)

印刷品:

['Weekly Roundup', 'Weekly Roundup 2']
['REF NO. A1400.5', 'REF NO. A1400.5 2']

编辑:

product_new = []
product_ref = []

for product in soup.select('div.product-details'):
    n = product.h2
    r = product.select_one('span.reference-number')

    if n and r:
        product_new.append(n.get_text(strip=True))
        product_ref.append(r.get_text(strip=True))

print(product_new)
print(product_ref)

编辑2:

from bs4 import BeautifulSoup


txt = '''
<div class="product-details">
   <h2 class="product-name" title=" Weekly Roundup"> Weekly Roundup</h2>
   <span class="reference-number">REF NO. A1400.5</span>
</div>

<div class="product-details">
   <h2 class="product-name" title=" Weekly Roundup"> Weekly Roundup 2</h2>
   <span class="reference-number">REF NO. A1400.6</span>
</div>
'''

soup = BeautifulSoup(txt, 'html.parser')

product_new = []
product_ref = []

for product in soup.select('div.product-details'):
    n = product.h2
    r = product.select_one('span.reference-number')

    if n and r:
        product_new.append(n.get_text(strip=True))
        product_ref.append(r.get_text(strip=True).rsplit(maxsplit=1)[-1])

print(product_new)
print(product_ref)

印刷品:

['Weekly Roundup', 'Weekly Roundup 2']
['A1400.5', 'A1400.6']

编辑3:

for a, b in zip(product_new, product_ref):
    print('{:<30} {}'.format(a, b))

印刷品:

Weekly Roundup                 A1400.5
Weekly Roundup 2               A1400.6

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从BeautifulSoup中的span标签获取文本

来自分类Dev

如何在每个循环中从类的子级获取标签文本?(jQuery的)

来自分类Dev

如何从beautifulsoup中的span标签获取字符串

来自分类Dev

如何在for循环中更新标签小部件中的文本?

来自分类Dev

如何编辑在for循环中生成的小部件标签的文本?

来自分类Dev

如何获取包含特定文本的<span>标签的父级

来自分类Dev

如何使用jquery使用in span标签获取文本?

来自分类Dev

如何通过使用python硒获取span标签(如<span> Test </ span>)中的文本?

来自分类Dev

beautifulsoup在标签之间获取文本

来自分类Dev

如何删除for循环中的标签

来自分类Dev

在使用BeautifulSoup忽略格式标签的同时,如何从html获取文本?

来自分类Dev

如何在Python中使用Beautifulsoup获取嵌套标签的文本?

来自分类Dev

如何使用 Selenium 和 BeautifulSoup 从标签中获取文本

来自分类Dev

更改循环中定义的标签文本

来自分类Dev

无法使用BeautifulSoup获取span属性的文本

来自分类Dev

如何从for循环中设置文本?

来自分类Dev

BeautifulSoup:如何提取封装在多个 div/span/id 标签中的文本

来自分类Dev

如何使用beautifulsoup在span标签之间抓取

来自分类Dev

获取隐藏的span标签的文本值

来自分类Dev

Selenium XPATH如何从输入id标签下面的Span标签获取文本

来自分类Dev

如何使用beautifulsoup获取包含在包含多个子标签的标签中的文本?

来自分类Dev

使用BeautifulSoup获取没有标签的文本

来自分类Dev

使用beautifulsoup从br标签获取文本

来自分类Dev

使用BeautifulSoup获取没有标签的文本?

来自分类Dev

如何在标签下获取文本文本,而忽略beautifulsoup子标签内的另一个文本?

来自分类Dev

如何仅在BeautifulSoup中获取标签的内部文本,而不包括嵌入式文本?

来自分类Dev

如何获取从循环中获取的总行数?

来自分类Dev

从在BeautifulSoup中包含嵌套span标签的span标签中抓取文本

来自分类Dev

如何使用带有Java的Selenium Webdriver从包含在多个span标签内的span元素中获取实际文本

Related 相关文章

  1. 1

    如何从BeautifulSoup中的span标签获取文本

  2. 2

    如何在每个循环中从类的子级获取标签文本?(jQuery的)

  3. 3

    如何从beautifulsoup中的span标签获取字符串

  4. 4

    如何在for循环中更新标签小部件中的文本?

  5. 5

    如何编辑在for循环中生成的小部件标签的文本?

  6. 6

    如何获取包含特定文本的<span>标签的父级

  7. 7

    如何使用jquery使用in span标签获取文本?

  8. 8

    如何通过使用python硒获取span标签(如<span> Test </ span>)中的文本?

  9. 9

    beautifulsoup在标签之间获取文本

  10. 10

    如何删除for循环中的标签

  11. 11

    在使用BeautifulSoup忽略格式标签的同时,如何从html获取文本?

  12. 12

    如何在Python中使用Beautifulsoup获取嵌套标签的文本?

  13. 13

    如何使用 Selenium 和 BeautifulSoup 从标签中获取文本

  14. 14

    更改循环中定义的标签文本

  15. 15

    无法使用BeautifulSoup获取span属性的文本

  16. 16

    如何从for循环中设置文本?

  17. 17

    BeautifulSoup:如何提取封装在多个 div/span/id 标签中的文本

  18. 18

    如何使用beautifulsoup在span标签之间抓取

  19. 19

    获取隐藏的span标签的文本值

  20. 20

    Selenium XPATH如何从输入id标签下面的Span标签获取文本

  21. 21

    如何使用beautifulsoup获取包含在包含多个子标签的标签中的文本?

  22. 22

    使用BeautifulSoup获取没有标签的文本

  23. 23

    使用beautifulsoup从br标签获取文本

  24. 24

    使用BeautifulSoup获取没有标签的文本?

  25. 25

    如何在标签下获取文本文本,而忽略beautifulsoup子标签内的另一个文本?

  26. 26

    如何仅在BeautifulSoup中获取标签的内部文本,而不包括嵌入式文本?

  27. 27

    如何获取从循环中获取的总行数?

  28. 28

    从在BeautifulSoup中包含嵌套span标签的span标签中抓取文本

  29. 29

    如何使用带有Java的Selenium Webdriver从包含在多个span标签内的span元素中获取实际文本

热门标签

归档