Невозможно получить тег 'src' для изображения с Beautiful Soup - PullRequest
0 голосов
/ 17 декабря 2018

В настоящее время я работаю над веб-шабером для загрузки информации с веб-сайта моей школьной газеты и повторной загрузки на наш новый предстоящий веб-сайт.Прямо сейчас я тестирую, как загрузить изображения с веб-страницы с помощью bs4.Однако, как объяснено в моем коде ниже, я не могу найти тег 'src' для изображения, также называемый URL, чтобы загрузить изображение.

import requests, bs4

url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'
res = requests.get(url)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text)
imgElems = soup.select('img')
print(imgElem[2]) 
# prints <img alt="18160.jpeg" data-type="image" id="comp-jpa6qz48imgimage"/>

Так что для дальнейшего объяснения:

1.) Если вы перейдете по ссылке и просмотрите веб-страницу с помощью инструментов разработчика, вы поймете, что imgElem [2] является основным изображением в новостной статье, которую я пытаюсь получить.Вот изображение ниже, чтобы проиллюстрировать, что я имею в виду:

Вот скриншот веб-страницы

2.) И причина, по которой я печатаю imgElem [2], заключается в демонстрациичто Beautiful Soup не захватывает тег 'src' с остальными данными

Короче, может кто-нибудь объяснить, что я пропускаю?Может ли эта неспособность захватить тег 'src' из-за того, что сайт является сайтом Wix?Спасибо за любую помощь, которую вы можете оказать

1 Ответ

0 голосов
/ 18 декабря 2018

может быть просто случай, когда страница должна отображаться первой, потому что она динамическая.Я полагаю, что пакет requests-html ссылка здесь может сделать это (хотя, кажется, есть ошибка с ним, если вы пытаетесь использовать его со Spyder. Так что я не слишком знаком с этим.)В какой-то момент мне придется научиться / поиграться с ним.

В то же время я использовал Selenium для работы с динамическими страницами.Селен работал на меня над этим:

import bs4 
from selenium import webdriver 

url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'

browser = webdriver.Chrome()
browser.get(url)

res = browser.page_source

soup = bs4.BeautifulSoup(res, 'html.parser')
imgElems = soup.find('img').get('src')

# print (imgElems) 
# prints https://static.wixstatic.com/media/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.jpg/v1/fill/
#        w_820,h_151,al_c,q_80,usm_0.66_1.00_0.01/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.webp

browser.close()
...