使用Python BeautifulSoup找不到表

时间:2017-07-13 06:25:08

标签: python web-scraping bs4

我正在尝试从以下NOAA网站https://www.weather.gov/afc/alaskaObs抓取表id = AWS中的数据,但是当我尝试使用' .find'我的结果没有。我能够返回父div,但似乎无法访问该表。以下是我的代码。

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"时,它会返回以下内容。

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

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

2 个答案:

答案 0 :(得分:1)

urlopen只会为您提供从服务器下载的DOM,而不是在运行初始客户端脚本后最终得到的DOM。对于您的示例站点,该表是在页面加载后生成的Javascript。因此,您需要使用PhantomJS,Selenium等让必要的客户端JS首先运行。

答案 1 :(得分:0)

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

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