首页 > 解决方案 > Beautiful Soup - 如何抓取包含特定 src 属性的图像?

问题描述

几天前我刚刚开始学习网页抓取,并认为尝试将 Mangadex 抓取为一个迷你项目会很有趣。提前感谢您的建议!

我正在尝试通过使用 Beautiful Soup 4 和 Python 3.7 提取 img 标签的 src 属性来抓取图像

我感兴趣的 HTML 部分是:

<div class="reader-image-wrapper col-auto my-auto justify-content-center align-items-center noselect nodrag row no-gutters" data-state="2" data-page="1" style="order: 1;">
  <img draggable="false" class="noselect nodrag cursor-pointer" src="https://s5.mangadex.org/data/554c97a14357f3972912e08817db4a03/x1.jpg">
</div>

我感兴趣的每个图像都包含一个以“ https://s5.mangadex.org/data/ ”开头的 src 属性,所以我想也许我可以定位以该特定属性开头的图像。

我尝试使用 select() 来查找 img 元素,然后使用 get() 来查找 src,但对于特定的 html 部分没有任何运气。

使用 select() 和 get() 工作的 HTML 部分是:

<img class="mx-2" height="38px" src="/images/misc/navbar.svg?3" alt="MangaDex" title="MangaDex">

<img src="/images/misc/miku.jpg" width="100%">

<img class="mx-2" height="38px" src="/images/misc/navbar.svg?3" alt="MangaDex" title="MangaDex">

标签: pythonhtmlweb-scrapingbeautifulsoup

解决方案


你不能直接用 BeautifulSoupmangadex 。Mangadex 在文档准备好后使用 javascript 加载他们的图像。使用 BeautifulSoup 得到的是那个空文档。这就是它失败的原因。该网站解释了如何抓取依赖 javascript 来提供其内容的网页:

https://towardsdatascience.com/data-science-skills-web-scraping-javascript-using-python-97a29738353f


推荐阅读