【问题标题】:How to use Python's BeautifulSoup html parser to get img tag src with 2 'src' attributes如何使用 Python 的 BeautifulSoup html 解析器获取具有 2 个“src”属性的 img 标签 src
【发布时间】:2020-05-10 14:35:09
【问题描述】:

我的 HTML 页面包含带有 2 个“src”属性的图像标签,我想使用 BS 提取第一个“src”而不是第二个“src”。

例如:

当我如下使用BS时:

from bs4 import BeautifulSoup

html_doc = <img class="lazy" src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/dog-puppy-on-garden-royalty-free-image-1586966191.jpg?crop=1.00xw:0.669xh;0,0.190xh&resize=980:*"                        src="https://www.mdf.qa/media/catalog/product/cache/1/image/800x800/9df78eab33525d08d6e5fb8d27136e95/b/l/black_2.jpg"/>

soup = BeautifulSoup(html_doc, 'html.parser')
bs_images = soup.find_all('img')
for bs_image in bs_images:
   attrs = bs_image.attrs
   image_path = attrs['src']

我得到的路径是第二个 src "https://www.mdf.qa/media/catalog/product/cache/1/image/800x800/9df78eab33525d08d6e5fb8d27136e95/b/l/black_2.jpg" 但我需要第一个 src - https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/dog-puppy-on-garden-royalty-free-image-1586966191.jpg?crop=1.00xw:0.669xh;0,0.190xh&resize=980:* 。

【问题讨论】:

    标签: python beautifulsoup html5-img


    【解决方案1】:

    BeautifulSoup 似乎在第一个 src 的顶部重写了第二个 src,因此第一个 src 不会存储在任何地方。我建议使用正则表达式来解决这个问题。

    import re
    
    html_doc = '<img class="lazy" src="https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/dog-puppy-on-garden-royalty-free-image-1586966191.jpg?crop=1.00xw:0.669xh;0,0.190xh&resize=980:*"                        src="https://www.mdf.qa/media/catalog/product/cache/1/image/800x800/9df78eab33525d08d6e5fb8d27136e95/b/l/black_2.jpg"/>'
    
    bs_images = re.findall('<img[^<>]+>', html_doc)
    for bs_image in bs_images:
       image_path = re.search('src="([^"]+)"', bs_image).group(1)
       print(image_path)
    

    Here 是 src 匹配的链接。使用 re.search 我们只得到第一个匹配项(使用 findall 我们会得到所有匹配项)。

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 2018-01-07
      • 2017-10-14
      • 1970-01-01
      • 2021-07-27
      • 2013-04-06
      • 2011-02-07
      • 2016-12-19
      • 2016-01-03
      相关资源
      最近更新 更多