无法使用beauthulsoup分析表

2024-03-28 08:33:48 发布

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

我一直试图用table id=“tblDataset2”解析表here,并试图访问表中的行,但当我使用beauthoulGroup解析网页时,只得到一行。 我的代码是:

from bs4 import BeautifulSoup
import requests

URL = 'http://podaac.jpl.nasa.gov/ws/'
dataset_ids = []
html = requests.get(URL + 'search/granule/index.html')
soup = BeautifulSoup(html.text, 'html.parser')

table = soup.find("table", {"id": "tblDataset2"})
rows = table.find_all('tr')
rows.remove(rows[0])
print table
for row in rows:
    x = row.find_all('td')
    dataset_ids.append(x[0].text.encode('utf-8'))

print dataset_ids

我想访问表的所有行。请帮我拿这个。谢谢。在


Tags: textimportididsurlhtmltableall
1条回答
网友
1楼 · 发布于 2024-03-28 08:33:48

这个特定的数据集是由浏览器从另一个返回JSON响应的端点异步加载的。直接向该端点发出请求:

import requests

URL = 'http://podaac.jpl.nasa.gov/l2ssIngest/datasets'
response = requests.get(URL)
data = response.json()

for item in data["datasets"]:
    print(item["persistentId"], item["shortName"])

印刷品:

^{pr2}$

对于第一个数据集,您需要向“search”端点发出GET请求:

from operator import itemgetter

import requests


URL = 'http://podaac.jpl.nasa.gov/dmasSolr/solr/dataset/select/'
response = requests.get(URL, params={
    'q': '*:*',
    'fl': 'Dataset-PersistentId,Dataset-ShortName-Full',
    'rows': '2147483647',
    'fq': 'DatasetPolicy-AccessType-Full:(OPEN OR PREVIEW OR SIMULATED OR REMOTE) AND DatasetPolicy-ViewOnline:Y',
    'wt': 'json'
})
data = response.json()

for doc in sorted(data['response']['docs'], key=itemgetter('Dataset-ShortName-Full')):
    print(doc['Dataset-PersistentId'], doc['Dataset-ShortName-Full'])

印刷品:

(u'PODAAC-GHRAM-4FA01', u'ABOM-L4HRfnd-AUS-RAMSSA_09km')
(u'PODAAC-GHGAM-4FA01', u'ABOM-L4LRfnd-GLOB-GAMSSA_28km')
(u'PODAAC-AKASA-XOGD1', u'ALTIKA_SARAL_L2_OST_XOGDR')
(u'PODAAC-USWCO-ALT01', u'ALT_TIDE_GAUGE_L4_OST_SLA_US_WEST_COAST')
...
(u'PODAAC-SASSX-L2WAF', u'WAF_DEALIASED_SASS_L2')
(u'PODAAC-SMMRN-2WAF0', u'WENTZ_NIMBUS-7_SMMR_L2')
(u'PODAAC-SASSX-L2SN0', u'WENTZ_SASS_SIGMA0_L2')

如果不想深入研究页面的加载和格式,可以使用由^{}自动生成的真正的浏览器。在

相关问题 更多 >