Загрузите конкретное c изображение с веб-сайта, используя BeautifulSoup - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь загрузить изображение с веб-сайта с помощью BeautifulSoup.

Это фрагмент HTML с соответствующего веб-сайта:

<div class="c-image _verticalMode">
    <div class="c-image__inner">
        <img src="https://images.example.com/qwe098.jpg/dims/optimize" class="c-image__image" width="100%">
    </div>
</div>

Вот как много, что я написал до сих пор:

import requests
from bs4 import BeautifulSoup as bs

url=r'https://www.example.com/d?tNo=123&aNo=17'

soup=bs(requests.get(url).content,'html.parser')
pics=soup.find(class_='c-image')
print(pics)

Это печатает:

<div class="c-image _verticalMode">
<!--
        <div class="c-image__inner">
          <img src="../../img/c/dummy.jpg" class="c-image__image" width="100%">
        </div>
        -->
<!--
        <a href="#" class="c-img__prev"><i class="i-arrow-left-black"></i></a>
        <a href="#" class="c-img__next"><i class="i-arrow-right-black"></i></a>
      -->
</div>

img sr c урезан (из-за BeautifulSoup?), но это не так похоже, это то же самое, что и местоположение, указанное в первом фрагменте HTML (хотя оно находится в том же месте).

Мне не удается получить ссылку. Я пытался использовать soup.find(class_='c-image__image'), но это возвращает объект NoneType.

Что я могу сделать, чтобы получить правильную ссылку на изображение, чтобы я мог ее скачать?

1 Ответ

1 голос
/ 20 апреля 2020

Работа строго от вашего html фрагмента в вопросе:

my_img = """[your html snippet]"""

from bs4 import BeautifulSoup as bs
soup = bs(my_img,'lxml')
pics=soup.select_one('div.c-image__inner img')
print(pics['src'])

Вывод:

https://images.example.com/qwe098.jpg/dims/optimize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...