Python Can';t使用BeautifulSoup刮去嵌套的html

Python Can';t使用BeautifulSoup刮去嵌套的html,python,html,web-scraping,beautifulsoup,bs4,Python,Html,Web Scraping,Beautifulsoup,Bs4,我有兴趣从以下源代码中删除“0.449” 其结果是: <td class="tblInner" id="0-0">-</td> - 我不确定为什么td中嵌套的所有内容都没有显示出来。当我搜索td的内容时,我的结果只是“-”。如何从这段代码中获取所需的值?您可能正在删除一个在初始加载后使用javascript更新DOM的网站 您有两个选择: 找出填充HTML页面的javascript代码从何处获取数据,并调用它。数据很可能来自一个API,您可以使用CURL直接调用该A

我有兴趣从以下源代码中删除“0.449”

其结果是:

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

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

您可能正在删除一个在初始加载后使用javascript更新DOM的网站

您有两个选择:

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

我没有看到你发布了你想要刮取的url

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


现在,您只需要了解每个参数的作用,并解析其输出,而不是编写HTML刮板请原谅缺少错误检查和模块化,但这应该可以根据@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]
你可以参考这个答案
<td class="tblInner" id="0-0">-</td>
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]