Соскрести фото с сайта с BeautifulSoup - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу загрузить изображение профиля по ссылке.

<div class="l-main">
  <script id="js-initial-data" data-json="{"openFanClub":1, "roomId":1700}"> </script>
  <p class="room-profile-head-bg l-room-profile-head-bg">
    <img src="https://image..." alt>
  </p>
</div>

Вот мой код, но он не работает:

import requests
from bs4 import BeautifulSoup

url = "https://..."
req = requests.get(url)
soup = BeautifulSoup(req.text,'html.parser')
images = soup.select('script[data-json="{"openFanClub":1, "roomId":1700}"]')
for image in images:
  i = image.attrs['room_id']
  link = image.select_one('img').attrs['src']
  filename = 'images/{i}.jpg'
  print(filename, link)

Вы можете использовать любой инструмент или библиотека (Selenium, BeautifulSoup, et c.), чтобы заставить его работать. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020
import requests
from bs4 import BeautifulSoup


photos = [170038, 197343, 61730]

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'
}


def main(url):
    with requests.Session() as req:
        for photo in photos:
            print(f"Downloading {photo}.jpg")
            r = req.get(url, params={'room_id': photo}, headers=headers)
            soup = BeautifulSoup(r.content, 'html.parser')
            target = soup.find("img", width="640").get("src")
            r = req.get(target)
            with open(f"{photo}.jpg", 'wb') as f:
                f.write(r.content)


main("https://www.showroom-live.com/room/profile")

0 голосов
/ 21 апреля 2020

Вы можете получить изображение с сайта, используя этот метод:

from bs4 import BeautifulSoup
from urllib.request import urlopen, urlretrieve

#Get every image from the website
html_page = urlopen('https://www.showroom-live.com/room/profile?room_id=170038')
soup = BeautifulSoup(html_page, "html.parser")
images = []
for img in soup.findAll('img'):
    images.append(img.get('src'))

#extract profile image
image = images[5]

#Download Image
path = r"C:\Users\username\Downloads\room_id.jpg"
urlretrieve(image, path)

Если я вас правильно понимаю, это больше того, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...