小编Fre*_*hri的帖子

如何用Python从DuckDuckGo的图像搜索结果中抓取图像

我正在使用 python 创建一个应用程序,它将显示从 DuckDuckGo 的图像搜索结果中抓取的图像。所以我需要根据搜索获取图像的链接列表。问题在于,构成 DuckDuckGo 图像搜索结果的 HTML 不包含任何图像标签,而是图像似乎存储在分区标签中。我如何在 python 的帮助下抓取那些该死的图像链接并将它们存储在我的程序的变量中?

我希望我的变量看起来像:

image_links = ["https://duckduckgo.com/?q=duckduckgo&atb=v166-4_p&iax=images&ia=images&iai=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fen%2Fthumb%2F8%2F88%2FDuckDuckGo_logo.svg%2F1200px-DuckDuckGo_logo.svg.png","https://duckduckgo.com/?q=duckduckgo&atb=v166-4_p&iax=images&ia=images&iai=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fen%2Fthumb%2F8%2F88%2FDuckDuckGo_logo.svg%2F1200px-DuckDuckGo_logo.svg.png"]
Run Code Online (Sandbox Code Playgroud)

DuckDuckGo 图像搜索结果中 HTML 结构的可视化

编辑:

当我通过执行以下操作从 URL 中抓取 HTML 时:

source = urllib.request.urlopen("https://duckduckgo.com/?q=duckduckgo&atb=v166-4_p&iax=images&ia=images").read()
Run Code Online (Sandbox Code Playgroud)

它根本不返回任何图像标签。

我正在通过这样做来检查:

source_tree = BeautifulSoup(source, 'html.parser')

links = [img.get('src') for img in source_tree.find_all('img', _class='tile--img__img')]

print(f"links: {links}")
print(f"img in source_tree: {'img' in str(source_tree)}")
print(f"source_tree: {source_tree}")
Run Code Online (Sandbox Code Playgroud)

输出:

links: []
img in source_tree: False
source_tree: <!DOCTYPE html>
<html class="no-js has-zcm" lang="en_US"><head><meta content="text/html; charset=utf-8" http-equiv="content-type"/><title>duckduckgo at DuckDuckGo</title><link href="/s1775.css" rel="stylesheet" type="text/css"/><link href="/r1775.css" rel="stylesheet" type="text/css"/><meta content="noindex,nofollow" name="robots"/><meta content="origin" …
Run Code Online (Sandbox Code Playgroud)

web-scraping python-3.x duckduckgo

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

duckduckgo ×1

python-3.x ×1

web-scraping ×1