我正在尝试从此链接读取STRaND-1的两个线元素:http://celestrak.com/NORAD/elements/cubesat.txt,因此我可以从我正在构建的地面站跟踪它。我真的不明白如何使用xtree.xpath命令,我想学习如何。 我正在尝试以下代码,这些代码是我刚才在这里提出的类似问题中找到的:
import numpy as np
from lxml import html
import requests
line_number = 50
for word in range(0,5):
page = requests.get("http://celestrak.com/NORAD/elements/cubesat.txtid=%s" % word)
tree = html.fromstring(page.text)
print (tree.xpath("//b/text()")
这应该在html页面的元素之间打印代码吗?我如何从某一行打印?特别是在我想要的文本之前没有html前缀的时候?
感谢您的时间。
答案 0 :(得分:2)
尝试以下解决方案以获取所需数据:
import requests
url = "http://celestrak.com/NORAD/elements/cubesat.txt"
response = requests.get(url)
page_content = response.text
all_lines = [line.strip() for line in page_content.split("\n")]
for index, line in enumerate(all_lines):
if line == "STRAND-1":
first_value = all_lines[index + 1]
second_value = all_lines[index + 2]
break
print(first_value, "\n", second_value)
输出:
1 39090U 13009E 18037.58367953 .00000016 00000-0 21168-4 0 9998
2 39090 98.5328 245.5663 0008674 331.4360 28.6349 14.35009671259097
答案 1 :(得分:1)
我在安德森的帮助下想出了如何做到这一点。 (万分感谢!)
使用urllib.request.urlopen,一个基本的for循环和.decode utf-8我得到了它的工作。没有甚至需要lxml。我知道这远非这个逻辑的最优雅的实现,并且任何有关如何清理它并压缩它的输入将不胜感激,但至少它对我有用。
我的代码:
from urllib.request import urlopen
line_number1 = 50
line_number2 = 1
with urlopen("http://celestrak.com/NORAD/elements/cubesat.txt") as TLEDB:
i = 1
for line in TLEDB:
if i == line_number1:
break
i += 1
line1 = line.decode("utf-8")
print(line1)
n = 1
for line in TLEDB:
if n == line_number2:
break
n += 1
line2 = line.decode("utf-8")
print(line2)
再次感谢您的帮助。
→