【问题标题】:Beautiful Soup select google image returns empty listBeautiful Soup 选择谷歌图片返回空列表
【发布时间】:2022-01-11 01:24:14
【问题描述】:

我想使用BeautifulSoupGoogle Arts & Culture 检索信息。 我检查了许多 stackoverflow 帖子 ([1], [2], [3], [4], [5]),但仍然无法检索到信息。

我想要每个图块(图片)的 (li) 信息,例如 href,但是,find_allselect one 返回空列表或无。

您能帮我获取“e0WtYb HpzMff PJLMUc”类锚标记的以下 href 值吗?

href="/entity/claude-monet/m01xnj?categoryId=artist"

以下是我尝试过的。

import requests
from bs4 import BeautifulSoup

url = 'https://artsandculture.google.com/category/artist?tab=time&date=1850'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html.parser')
print(soup.find_all('li', class_='DuHQbc'))                 # []
print(soup.find_all('a', class_='PJLMUc'))                  # []
print(soup.find_all('a', class_='e0WtYb HpzMff PJLMUc'))    # []
print(soup.select_one('#tab_time > div > div:nth-child(2) > div > ul > li:nth-child(2) > a'))  # None
for elem in soup.find_all('a', class_=['e0WtYb', 'HpzMff', 'PJLMUc'], href=True):
    print(elem)  # others with class 'e0WtYb'

...
# and then something like elem['href']

https://artsandculture.google.com/category/artist?tab=time&date=1850

从 Chrome 复制的选择器

#tab_time > div > div:nth-child(2) > div > ul > li:nth-child(2) > a

【问题讨论】:

  • 你检查过html.text变量中相同元素的xpath是什么?

标签: python beautifulsoup web-crawler


【解决方案1】:

不幸的是,问题不在于您使用 BeautifulSoup 错误。您请求的网页似乎缺少其内容!我将html.text 保存到文件中以供检查:

为什么会发生这种情况? 因为网页实际上是使用 JavaScript 加载其内容的。当您在浏览器中打开该站点时,浏览器会执行 JavaScript,从而将所有艺术家方块添加到网页中。 (您甚至可能会注意到,当您第一次加载站点时,方块不存在的短暂时刻。)另一方面,requests 不执行 JavaScript — 它只是下载网页的内容并将它们保存到字符串。

你能做些什么?不幸的是,这意味着抓取网站将非常困难。在这种情况下,我建议寻找其他信息来源或使用网站提供的 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2022-12-03
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多