【问题标题】:Extracting src from Beautifulsoup Tag从 Beautifulsoup 标签中提取 src
【发布时间】:2016-10-29 10:31:14
【问题描述】:

我试图使用 beautifulsoup 来获取 newegg 的产品名称、描述、价格和图片。我有以下 bs4.element.Tag 类型,我想从标签中提取“src”链接。以下是我的标签:

df = <a class="itemImage" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16875169194&amp;cm_re=Samsung_edge-_-75-169-194-_-Product" id="img_75-169-194" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'>\n<img alt='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty' src="http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'/>\n</a>

如何提取

src="http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg"

来自这个标签?我试过了

df.attrs['src']

但我收到了 Keyerror。

【问题讨论】:

    标签: python-2.7 beautifulsoup


    【解决方案1】:

    src在img标签中:

    from bs4 import BeautifulSoup
    tag = """<a class="itemImage" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16875169194&amp;cm_re=Samsung_edge-_-75-169-194-_-Product" id="img_75-169-194" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'>\n<img alt='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty' src="http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'/>\n</a>"""
    
    soup = BeautifulSoup(tag,"lxml")
    
    src = soup.img["src"]
    

    这会给你:

    http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg
    

    【讨论】:

      【解决方案2】:

      在python中尝试正则表达式 参考
      https://docs.python.org/2/library/re.html

      import re
      s = """
          <a class="itemImage" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16875169194&amp;cm_re=Samsung_edge-_-75-169-194-_-Product" id="img_75-169-194" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'>\n<img alt='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty' src="http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg" title='Samsung Galaxy S7 Edge Dual SIM Unlocked Smart Phone, Dual Edge 5.5" AMOLED Display, black Color, 32GB Storage 4GB RAM International Version - No US Warranty'/>\n</a>
          """
      src_list = re.findall("src=[^\s]*", s)
      

      输出:

      src_list = ['src="http://images10.newegg.com/ProductImageCompressAll200/75-169-194-04.jpg"']
      

      【讨论】:

        猜你喜欢
        • 2020-12-01
        • 2017-10-14
        • 2013-04-06
        • 2013-04-29
        • 2018-07-18
        • 2021-07-27
        • 2018-01-07
        • 1970-01-01
        • 2021-12-22
        相关资源
        最近更新 更多