无法使用BeautifulGroup刮取嵌套的html

2024-05-18 12:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有兴趣从http://hdsc.nws.noaa.gov/hdsc/pfds/pfds_map_cont.html?Lat=33.146425&Lon=-87.5805543中从以下源代码中获取“0.449”。在

<td class="tblInner" id="0-0">
    <div style="font-size:110%">
        <b>0.449</b>
    </div>
    "(0.364-0.545)"
</td>

使用BeautifulSoup,我现在写了:

^{pr2}$

结果是:

<td class="tblInner" id="0-0">-</td>

我不确定为什么td中嵌套的所有内容都没有出现。当我搜索td的内容时,我的结果只是“-”。如何从代码中获取我想要的值?在


Tags: dividhttpmap内容noaaclasstd
2条回答

请原谅缺乏错误检查和模块化,但根据@Eloims的观察,这应该能满足您的需要:

import requests
import re

url = 'http://hdsc.nws.noaa.gov/cgi-bin/hdsc/new/cgi_readH5.py?lat=33.1464&lon=-87.5806&type=pf&data=depth&units=english&series=pds'

r = requests.get(url)
response = r.text

coord_list_text = re.search(r'quantiles = (.*);', response)
coord_list = eval(coord_list_text.group(1))

print coord_list[0][0]

您可能会抓取一个在初始加载后使用javascript更新DOM的网站。在

你有几个选择:

  • 找出填充HTML页面的javascript代码从何处获得数据并调用它。数据很可能来自一个API,您可以使用CURL直接调用它。99%的时候这是最好的方法。在
  • 使用无头浏览器(僵尸.js,…)以在javascript更改HTML代码后检索它。方便、快速,但是python中很少有工具可以做到这一点(googlepython headless browser)。在
  • 使用selenium或splinter远程控制真实浏览器(chrome、firefox等)。它很方便,在python中可以工作,但是速度非常慢

编辑:

我没看到你发布了你想删除的网址。在

在您的特定情况下,您需要的数据来自对以下URL的AJAX调用:

http://hdsc.nws.noaa.gov/cgi-bin/hdsc/new/cgi_readH5.py?lat=33.1464&lon=-87.5806&type=pf&data=depth&units=english&series=pds

现在只需要了解每个参数的作用,并解析其输出,而不必编写HTML scraper。在

相关问题 更多 >

    热门问题