当前位置: 首页 > 知识库问答 >
问题:

无法使用Python的Beautiful Soup从特定span标记中提取文本

柯学
2023-03-14

我目前正在刮这个网站,以建立一个汽车数据集,我有一个方程式建立循环通过网站的每一页,而刮。然而,我无法提取文本,我需要使这一工作。

下面的代码片段是我试图刮去的标记。我需要得到现场的车辆数量。

<span class="d-none d-sm-inline">166 Vehicles</span>

这张图片显示了我正在尝试删除的站点元素

下面是我用来刮取该元素的代码:

# Packages
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import requests
    
print("Started web scrape...")
    
limit = 10
start = 0 #increment by limit
website = requests.get(f'https://www.sosubaru.com/new-inventory/index.htm?start={start}')
soup = BeautifulSoup(website.text, 'html.parser')
    
inventory_count = soup.select("span.d-none.d-sm-inline")[0].string
    
print(inventory_count)

此代码返回以下内容:

Started OR_GP_Roe_Motors web scrape...
Traceback (most recent call last):
  File "c:/mypath...", line 16, in <module>
    inventory_count = soup.select("span.d-none.d-sm-inline")[0].string
IndexError: list index out of range

然后我检查了一下为什么返回soup.select给我的所有内容来得到错误代码:

inventory_count = soup.select("span.d-none.d-sm-inline")
print(inventory_count)

它返回:

Started web scrape...
[]

为什么给我一个空名单?

然后我告诉它打印出网站上的每一个span标签,看看它是否在那里。结果打印出许多span标签,但不包括我正在寻找的一个。为什么我用漂亮的汤检测不出来?是我正在使用的解析器吗?我尝试使用'lxml'作为解析器,但它没有改变任何东西。这与网站是html xmls文档这一事实有关系吗?

我已经刮了几个网站,到现在为止还没有出现过类似这样的问题。

共有1个答案

蔡默
2023-03-14

您想要的数据和标记不会出现在html源代码中,这意味着它们是由JavaScript添加的。您可以使用selenium在页面源被呈现之后获取它,也可以使用requests_html,它有一个类似于BeautifulSoup的API,它可以在刮取页面之前呈现页面的javascript。

from requests_html import HTMLSession

s = HTMLSession()
r = s.get(url)
r.html.render()
r.find . . . [whatever you want to search for]
 类似资料:
  • 我想摘录: 图像标记和 类数据内的锚标记文本 我成功地提取了img src,但从锚标记中提取文本时遇到了问题。 这是整个HTML页面的链接。 这是我的代码: 我试图做的是提取图像src(link)和div class=data中的标题,例如: 应提取: 尼康COOLPIX L26 16.1 MP数码相机,配备5倍变焦NIKKOR玻璃镜头和3英寸LCD(红色)

  • 我正在尝试刮网页,在那里我需要解码整个表到一个数据帧。我正为此使用漂亮的汤。在某些标记中,有一些标记没有任何文本。但这些值会显示在网页上的特定span标记中。 下面的代码对应于该网页, 但是,这个标记中显示的值是。我试着删掉它,但我收到的是空短信。 如何刮这个价值使用美丽的汤。 URL:https://en.tutiempo.net/climate/ws-432950.html 下面给出了我的用于

  • 问题内容: 我要提取: 来自标签的src的文本和 类数据内的定位标记的文本 我成功地提取了img src,但是从锚标记中提取文本时遇到了麻烦。 这是整个HTML页面的链接。 这是我的代码: 我想做的是 提取图像src(链接)和中的标题,因此例如: 应该提取: 问题答案: 以上所有答案确实可以帮助我构建答案,因此,我对其他用户提出的所有答案投了赞成票:但是我最终对自己正在处理的确切问题汇总了自己的答

  • 我正在尝试使用Python中的BeautifulSoup包提取存在于div标记中的文本。 示例我想提取标记 内部的文本 以及 中的文本 当我运行代码时,系统崩溃并显示以下错误: ----------------------------------------------------------------------------------------------------在60###artic

  • 我正在尝试使用Python和Selenium获取此元素。 这就是我所尝试的: 我做错了什么?

  • 我要提取的数据来自这个网站https://www.adobe.com/support/security/advisories/apsa11-04.html。我只想提取 发布日期:2011年12月6日最后更新:2012年1月10日漏洞标识符:APSA11-04 CVE编号:CVE-2011-2462 代码: 输出: 我不想要这些信息。我该如何过滤呢? 平台:全部*注意:Adobe Reader fo