#html #image #image-processing #web-scraping #web-crawler
#HTML #изображение #обработка изображений #очистка веб-страниц #веб-сканер
Вопрос:
Мне нужно очистить 29 изображений этого отеля. С помощью приведенного ниже кода выводится каждая ссылка отдельно при каждом запуске ячейки. Несмотря на то, что я использовал links.append(), мне нужно повторно запустить ячейку, чтобы получить другое изображение.
r = rq.get("https://uk.hotels.com/ho177101/?q-check-out=2020-04-18amp;FPQ=3amp;q-check-in=2020-04-17amp;WOE=6amp;WOD=5amp;q-room-0-children=0amp;pa=1amp;tab=descriptionamp;JHR=2amp;q-room-0-adults=2amp;YGF=2amp;MGT=1amp;ZSX=0amp;SYE=3#:WO")
soup = BeautifulSoup(r.text, "html.parser")
links = []
x = soup.select('img[src^="https://exp.cdn-hotels.com/hotels/1000000/560000/558400/558353"]')
for img in x:
links.append(img['src'])
#os.mkdir("hotel_photos")
for l in links:
print(l)
Заранее спасибо!
Ответ №1:
Попробуйте это:
links = []
x = soup.select('a[href^="https://exp.cdn-hotels.com/hotels/1000000/560000/558400/558353"]')
for img in x:
links.append(img['href'])
Но это будет работать только для этой конкретной ссылки, если вам нужен код, который очистит любую предоставленную вами ссылку, потому что это «https://exp.cdn-hotels.com/hotels/1000000/560000/558400/558353 » меняется в зависимости от отеля, так что это был бы лучший подход:
x = soup.select("li[id^='thumb-']")
for i in x:
links.append((next(i.children, None)["href"]))
for l in links:
print(l)
PS: Если вам нужно после этого загрузить изображения, обязательно замените «amp; w = 82 amp; h = 82» на «amp;w = 773 amp; h = 530», чтобы соответствовать отображаемому изображению.
Комментарии:
1. Я просто отредактировал его, чтобы вы могли передавать любую ссылку и по-прежнему иметь возможность удалять ее без каких-либо проблем.