首页 > 解决方案 > 美丽的汤返回“无”

问题描述

我正在使用以下代码使用美丽的汤提取数据:

import requests
import bs4
res = requests.get('https://www.jmu.edu/cgi-bin/parking_sign_data.cgi?hash=53616c7465645f5f5c0bbd0eccccb6fe8dd7ed9a0445247e3c7dcb4f91927f7ccc933be780c6e558afb8ebf73620c3e5e3b2c68cd3c138519068eac99d9bf30e1e67ce894deb3a054f95f882da2ea2f0|869835tg89dhkdnbnsv5sg5wg0vmcf4mfcfc2qwm5968unmeh5')
soup = bs4.BeautifulSoup(res.text, 'xml')
soup.find_all("span", class_="text")

我尝试了最后一行的不同变体,试图让程序显示任何内容,但每次它返回“无”或空列表时。我唯一能显示的是网站的整个 html 使用:print(soup.contents). 我试图提取的数据是每个 signID 标记中的“显示”标记值。当它打印网站的整个 HTML 时,数据就在那里。

附加信息:我试图提取的数字是停车场中当前的停车位数量,因此网站按秒更新。

附加信息 2:本网站是https://www.jmu.edu/parking/的 iframe 。我要的数据在“通勤停车”下的右下角

Website URL: https://www.jmu.edu/cgi-bin/parking_sign_data.cgi?hash=53616c7465645f5f5c0bbd0eccccb6fe8dd7ed9a0445247e3c7dcb4f91927f7ccc933be780c6e558afb8ebf73620c3e5e3b2c68cd3c138519068eac99d9bf30e1e67ce894deb3a054f95f882da2ea2f0|869835tg89dhkdnbnsv5sg5wg0vmcf4mfcfc2qwm5968unmeh5

标签: pythonhtmlweb-scrapingbeautifulsouphtml-parsing

解决方案


我可以看到您正在尝试提取Display每个Sign标签下的标签值。希望这对您有所帮助。

代码:

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.jmu.edu/cgi-bin/parking_sign_data.cgi?hash=53616c7465645f5f5c0bbd0eccccb6fe8dd7ed9a0445247e3c7dcb4f91927f7ccc933be780c6e558afb8ebf73620c3e5e3b2c68cd3c138519068eac99d9bf30e1e67ce894deb3a054f95f882da2ea2f0|869835tg89dhkdnbnsv5sg5wg0vmcf4mfcfc2qwm5968unmeh5')
soup = BeautifulSoup(res.text, 'lxml')
for data in soup.find_all('sign'):
    print(data.signid.text, data.display.text)

输出:

1  442
2  442
3  442
4 Happy Holidays
5 Happy Holidays

我只显示了 5 个值的输出,这给出了 57signIdDisplay值。

soup.find_all('display')如果只需要Display值,则可以直接使用。我在示例中使用了signIdandDisplay仅供参考。


推荐阅读