无法使用 Python BeautifulSoup 找到 table

Cannot find table using Python BeautifulSoup

我正在尝试从以下 NOAA 站点 https://www.weather.gov/afc/alaskaObs 的 table id=AWS 抓取数据,但是当我尝试使用 '.find 查找 table ' 我的结果是 none。我可以 return 父 div,但似乎无法访问 table。下面是我的代码。

from bs4 import BeautifulSoup
from urllib2 import urlopen

# Get soup set up
html = urlopen('https://www.weather.gov/afc/alaskaObs').read()
soup = BeautifulSoup(html, 'lxml').find("div", {"id":"obDataDiv"}).find("table", {"id":"AWS"})


print soup

当我试图找到父 div、"obDataDiv" 时,它 return 如下。

<div id="obDataDiv"> </div>

我是 BeautifulSoup 的新手,这是一个错误吗?感谢任何帮助,谢谢!

您提取的 div 似乎只包含一个 table。那么为什么不做这样的事情呢:

soup = BeautifulSoup(html, 'lxml').find("div", {"id":"obDataDiv"}).find("table")

urlopen 只会为您提供从服务器下载的 DOM,而不是 运行ning 初始客户端脚本后的结果。对于您的示例站点,table 是在页面加载后生成的 Javascript。所以你需要先使用 PhantomJS、Selenium 等来让必要的客户端 JS 运行。