python - 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">
解决方案
你不能直接用 BeautifulSoup刮mangadex 。Mangadex 在文档准备好后使用 javascript 加载他们的图像。使用 BeautifulSoup 得到的是那个空文档。这就是它失败的原因。该网站解释了如何抓取依赖 javascript 来提供其内容的网页:
https://towardsdatascience.com/data-science-skills-web-scraping-javascript-using-python-97a29738353f
推荐阅读
- c# - 如何在 C# 中获取 PowerShell 的 Get-Command 的“建议”?
- android - 如何更新蓝牙 LeScanCallback 中的文本视图?
- oracle - 尽管有提示,Oracle 并未在简单查询中使用索引
- c - 将数组传递给函数会更改函数“sizeof(array)”
- svn - 我应该硬包装 SVN 提交消息吗
- plsql - 在 PL/SQL 中的循环中更改数据库动态传递值
- php - 如何在php中更改字体颜色并在函数上添加空格
- django - 将python打印到textarea时如何从python中删除新的行标签?
- arrays - Vuejs axios如何用键传递数组?
- three.js - InstancedBufferGeometry 看相机