Python 3.x 如何使用python在beautifulsoup中通过lxml从网页中提取img src?

Python 3.x 如何使用python在beautifulsoup中通过lxml从网页中提取img src?,python-3.x,web-scraping,beautifulsoup,lxml,Python 3.x,Web Scraping,Beautifulsoup,Lxml,我是python新手,我正在amazon上从事web抓取项目,我在如何使用BeautifulSoup通过lxml从产品页面提取产品img src方面遇到了一个问题 我尝试了以下代码来提取它,但它没有显示img的url 这是我的密码: 导入请求 从bs4导入BeautifulSoup 进口稀土 url='1〕https://www.amazon.com/crocs-Unisex-Classic-Black-Women/dp/B0014C0LSY/ref=sr_1_2?_encoding=UTF8&

我是python新手,我正在amazon上从事web抓取项目,我在如何使用BeautifulSoup通过lxml从产品页面提取产品img src方面遇到了一个问题

我尝试了以下代码来提取它,但它没有显示img的url

这是我的密码:

导入请求
从bs4导入BeautifulSoup
进口稀土
url='1〕https://www.amazon.com/crocs-Unisex-Classic-Black-Women/dp/B0014C0LSY/ref=sr_1_2?_encoding=UTF8&qid=1560091629&s=fashion-女子国际船&sr=1-2&th=1&psc=1'
r=requests.get(URL,headers={'User-Agent':'Mozilla/5.0'})
s=BeautifulSoup(右文本,“lxml”)
img=s.find(class=“imgTagWrapper”).img['src']
#我试过这个密码。
打印(img)
我试过这个代码…但它显示如下:

数据:图像/jpeg;base64,/4.一个A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A HBYJXFDKBKAEII0KXWRVS02.中国政府的一个新的研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2)中国政府的一个研究(2 2)中国政府的一个研究(2)中国政府的一个研究(2 2 2 2 2 2 2 2)中国政府的一个研究(2 2 2 2)中国政府的研究(2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)中国中国政府的研究(2 2 2 2 2)中国政府的中国政府的研究(2 2。中国政府的研究(2(2 2 2 2 2)在2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)中国政府的研究(2(2 2 2)在2)JZGVMZ2HPANN0DXZ3EHL6GOOEHYAHIIMKPPOULZAXMAOQOKPAANQKMQSRO0T//


有什么帮助吗?

您看到的是图像的base64编码。你用它做什么取决于你用图像URL做什么

您想从该页面抓取的图像在此键的值中可用
data-a-dynamic-image
。其中有多个大小不同的图像。现在需要做的就是创建一个条件语句来隔离包含
395
的图像

import json
import requests
from bs4 import BeautifulSoup

url = 'https://www.amazon.com/crocs-Unisex-Classic-Black-Women/dp/B0014C0LSY/ref=sr_1_2?_encoding=UTF8&qid=1560091629&s=fashion-womens-intl-ship&sr=1-2&th=1&psc=1'

r = requests.get(url, headers={'User-Agent':'Mozilla/5.0'})
s = BeautifulSoup(r.text, "lxml")
img = s.find(id="landingImage")['data-a-dynamic-image']
img = json.loads(img)
for k,v in img.items():
    if '395' in k:
        print(k)
输出:

https://images-na.ssl-images-amazon.com/images/I/71oNMAAC7sL._UX395_.jpg
在这种情况下,尝试这样做,并选择一个适合您的需要:

for k,v in img.items():
    print(k)

看起来您得到的是实际的二进制JPEG数据,而不是图像链接。此外,二进制数据已编码为base64。您可以检查源网页,查看它是否包含链接或图像本身。如果是后者,那么就没有联系了。祝你好运。谢谢你,但是其他产品呢,我试图从另一个项目中提取数据,但它没有img链接大小为“395”!。。。。。这是一个链接,我不知道它是如何工作的。我尝试了json.loads()行,发现BS4对象不是字符串错误。当我将结果转换为str()时,它实际上崩溃了PyCharm(windows 10)是的,这是base64编码图像,但我尝试使用“html.parser”,它正常提取img src链接。