代码之家  ›  专栏  ›  技术社区  ›  Lorcan Kelleher

使用lxml/requests从网页获取TLE(Python3.6.4)

  •  1
  • Lorcan Kelleher  · 技术社区  · 7 年前

    我想从这本书里读一集 link. 链接来自 Space-Track.org

    我想读取链接并创建两个变量,在这样做时,两行元素的每一行对应一个变量。我做了一些搜索,并试图重用此线程中的代码 about reading a particular line from a web page in Python . 然而,我对requests或lxml都不熟悉。我尝试运行以下代码:

    <import numpy as np
    from lxml import html
    import requests
    
    for nn in range(0,2):
        page = requests.get("https://www.space-track.org/basicspacedata/query/class/tle_latest/ORDINAL/1/NORAD_CAT_ID/39090/orderby/TLE_LINE1%20ASC/format/tleid=%" % nn)
        tree = html.fromstring(page.text)
        print (tree.xpath("//b/text()")[0])
    >
    

    并得到以下回溯错误:

    <Traceback (most recent call last):
      File "C:\Python36-64\Projects\HTMLTLEREADER.py", line 19, in <module>
        page = requests.get("https://www.space-track.org/basicspacedata/query/class/tle_latest/ORDINAL/1/NORAD_CAT_ID/39090/orderby/TLE_LINE1%20ASC/format/tleid=%" % nn)
    ValueError: unsupported format character 'A' (0x41) at index 115
    >
    

    我最初试图阅读这两行代码,以检查代码是否在我的python版本上运行,因此nn的范围为(0,2)。

    感谢所有帮助。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Blender    7 年前

    错误信息非常清楚:

    ValueError: unsupported format character 'A' (0x41) at index 115
    

    字符串的索引115如下所示:

    "...NORAD_CAT_ID/39090/orderby/TLE_LINE1%20ASC/format/tleid=%" % nn
                                               ↑
    

    您正在使用百分比格式,但字符串中已包含URL中不相关百分比编码的百分比符号。您可以双重转义现有的百分号并修复最后的格式字符串:

    "...NORAD_CAT_ID/39090/orderby/TLE_LINE1%%20ASC/format/tleid=%s" % nn
                                             ↑                    ↑
    

    或者只是连接字符串:

    "...NORAD_CAT_ID/39090/orderby/TLE_LINE1%20ASC/format/tleid=" + str(nn)