我正在尝试从以下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很新,这是一个错误吗?感谢任何帮助,谢谢!
答案 0 :(得分:1)
urlopen只会为您提供从服务器下载的DOM,而不是在运行初始客户端脚本后最终得到的DOM。对于您的示例站点,该表是在页面加载后生成的Javascript。因此,您需要使用PhantomJS,Selenium等让必要的客户端JS首先运行。
答案 1 :(得分:0)
您提取的div
似乎只包含一个表。那么为什么不这样做呢:
soup = BeautifulSoup(html, 'lxml').find("div", {"id":"obDataDiv"}).find("table")