[英]How to use Python's BeautifulSoup html parser to get img tag src with 2 'src' attributes
我有 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 :*.
似乎 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)
這是 src 匹配的鏈接。 使用 re.search 我們只得到第一個匹配項(使用 findall 我們會得到所有匹配項)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.