【问题标题】:Download specific image from website using BeautifulSoup使用 BeautifulSoup 从网站下载特定图像
【发布时间】:2020-08-02 05:23:31
【问题描述】:

我正在尝试使用 BeautifulSoup 从网站下载图像。

这是来自相关网站的 HTML 的 sn-p:

<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 src 被截断(由于 BeautifulSoup?),但它看起来与第一个 HTML sn-p 中给出的位置不同(尽管它位于同一位置)。

我似乎无法获得链接。我尝试使用soup.find(class_='c-image__image'),但返回的是一个 NoneType 对象。

如何获得正确的图片链接以便下载?

【问题讨论】:

  • 我无法打开你的链接,但是通过查看你的代码,那些图像标签在 HTML cmets 中,所以 beautifulsoup 将其读取为文本内容,而不是标签。他们在&lt;!-- ... --&gt;
  • 您的网址https://www.example.com/d?tNo=123&amp;aNo=17 为我提供了404 - Not Found

标签: python html image beautifulsoup


【解决方案1】:

在问题中严格使用您的 html sn-p:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多