Как извлечь img src из веб-страницы через lxml в BeautifulSoup с помощью Python? - PullRequest
1 голос
/ 10 июня 2019

Я новичок в Python, и я работаю над проектом по поиску в сети с Amazon, и у меня есть проблема с тем, как извлечь продукт img src со страницы продукта через lxml с помощью BeautifulSoup

Я попробовал следующий код, чтобы извлечь его, но он не показывает URL-адрес img.

вот мой код:

import requests
from bs4 import BeautifulSoup
import re

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(class_="imgTagWrapper").img['src']
# I tried this code.

print(img)

Я попробовал этот код ... но он показывает так:

данные: изображение / JPEG; base64, / 9J / 4AAQSkZJRgABAQAAAQABAAD / 2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4 + JS5ESUM8SDc9Pjv / 2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv / wAARCAG9AM4DASIAAhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4 + Tl5ufo6erx8vP09fb3 + PN6 / 8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL / 8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0t .... //

любая помощь?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Изображение, которое вы хотите получить с этой страницы, доступно в значении этого ключа 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)
0 голосов
/ 10 июня 2019

То, что вы видите, - это кодировка base64 изображения.Что вы делаете с ним, зависит от того, что вы делаете с URL-адресами изображений.

...