用Python-Satellites进行Web抓取

用Python-Satellites进行Web抓取,python,web-scraping,Python,Web Scraping,我每天都要从卫星上多次获取卫星位置的数据。我关注的卫星是MUOS 5。我的问题是我无法获取表中任何更改的数据 from bs4 import BeautifulSoup import requests import csv info = soup.find('div', class_='container-main') info = info.find('div', id='trackinginfo') info = info.find('div', id='paneldata') info =

我每天都要从卫星上多次获取卫星位置的数据。我关注的卫星是MUOS 5。我的问题是我无法获取表中任何更改的数据

from bs4 import BeautifulSoup
import requests
import csv
info = soup.find('div', class_='container-main')
info = info.find('div', id='trackinginfo')
info = info.find('div', id='paneldata')
info = info.find('table', id='tabledata')
info = info.find('tr')
print(info)
我希望看到第二列41622中显示的信息,但我不知道如何只访问第二个td

<tr>
<td>NORAD ID:</td><td><div id="noradid"></div></td>
</tr>

如果我正确理解了你的问题,我将不胜感激。您正在本页上查找数据:

因为我认为HTML不是为BeautifulSoup设计的,所以我建议使用正则表达式


NORAD ID:41622这可能不是一个完整的答案,但我相信它会让你开始

您链接到的页面动态加载了javascript,因此beautifulsoup无法处理它。数据本身位于另一个url(见下文)——可以通过浏览器中的“开发人员”选项卡进行定位,并且由于它是json格式的,因此可以将其加载到python中

json包含历史信息,最新的项目位于json字符串的末尾。一旦你有了它,你就可以从中提取相关数据

正如您将在下面看到的,我设法将一些动态数据连接到一些类型,但我对术语并不十分熟悉,因此您可能需要做一些额外的工作来完成它。但是,正如我所说,这至少会让你开始:

import requests
import json

req = requests.get('https://www.n2yo.com/sat/instant-tracking.php?s=41622&hlat=40.71427&hlng=-74.00597&d=300&r=547647090737.1928&tz=GMT-04:00&O=n2yocom&rnd_str=8fde3fd56c515d8fb110d5145c7df86b&callback=')
data = json.loads(req.text)

heads = ['LATITUDE','LONGITUDE', 'AZIMUTH','ELEVATION','??','DECLINATION','ALTITUDE [km]','???','NORAD ID','ABC','xxx'] #as I said, not sure exactly what's what...    
target = list(data[0].values())[-1][-1] #this is the most recent data
dats = [item for item in list(target.values())[0].split('|')]
for v,d in zip(dats,heads):
    print(d,':',v)
输出:

LATITUDE : -6.18764033
LONGITUDE : -102.54010579
AZIMUTH : 216.12
ELEVATION : 28.65
?? : 242.47221474
DECLINATION : -12.92722520
ALTITUDE [km] : 35625.07
??? : 0.19091700104938
NORAD ID : 41622
ABC : 1598058725
xxx : 0

希望这会有所帮助。

您从哪里获得41622?我看到的唯一id=noradid是255444。在NoRAD id上你没有看到41622吗?我现在看到了;问题中的链接没有s=41622。那么,您的预期输出是什么呢?在该网页上,我想捕捉每小时经度、纬度等大约十几个动态数字。。如果我能捕获ID,我就知道如何捕获其余的信息。不完全是那张幻灯片。如果你点击track satellite,会弹出这个网页,提供实时数据。在这个网页上,所有数据都是通过Javascript提供的。Beauty Soup不运行网站提供的java脚本。我想你应该试试这样的方法:我试试看,看能不能让它工作。谢谢。我看看能不能帮我做这件事。
LATITUDE : -6.18764033
LONGITUDE : -102.54010579
AZIMUTH : 216.12
ELEVATION : 28.65
?? : 242.47221474
DECLINATION : -12.92722520
ALTITUDE [km] : 35625.07
??? : 0.19091700104938
NORAD ID : 41622
ABC : 1598058725
xxx : 0