将文本变成字典

Turning text into a dictionary

我已经成功提取了我的站点地图,我想将 url 变成一个列表。我不太清楚该怎么做,将 https 与修改日期分开。理想情况下,我还想把它变成一本带有相关日期戳的字典。最后,我打算遍历列表并创建网页的文本文件,并将日期时间戳保存在文本文件的顶部。

我将满足于将其转化为列表的下一步。这是我的代码:

import urllib.request
import inscriptis
from inscriptis import get_text
sitemap = "https://grapaes.com/sitemap.xml"
i=0
url = sitemap
html=urllib.request.urlopen(url).read().decode('utf-8')
text=get_text(html)
dicto = {text}
print(dicto)
for i in dicto:
        if i.startswith ("https"):
            print (i + '/n')

输出基本上是带有日期戳的行,space 和 url。

您可以先在空格周围拆分文本,然后这样操作:

text = text.split(' ')
dicto = {}
for i in range(0, len(text), 2):
    dicto[text[i+1]] = text[i]

给出一个以timestamp为key,URL为value的字典,如下:

{
 '2020-01-12T09:19+00:00': 'https://grapaes.com/',
 '2020-01-12T12:13+00:00': 'https://grapaes.com/about-us-our-story/', 
  ...,
 '2019-12-05T12:59+00:00': 'https://grapaes.com/211-retilplast/',
 '2019-12-01T08:29+00:00': 'https://grapaes.com/fruit-logistica-berlin/'
}

我相信你可以从这里开始做进一步的处理。

除了上面的答案:您还可以使用 XML 解析器(标准模块)来实现您想要做的事情:

# Save your xml on disk
with open('sitemap.xml', 'w') as f:
    f.write(text)
    f.close()

# Import XML-Parser
import xml.etree.ElementTree as ET

# Load xml and obtain the root node
tree = ET.parse('sitemap.xml')
root_node = tree.getroot()

从这里您可以访问 xml 的节点,就像其他所有类似列表的对象一样:

print(root_node[1][0].text) # output: 'https://grapaes.com/about-us-our-story/'
print(root_node[1][1].text) # output: '2020-01-12T12:13+00:00'

由此创建字典就这么简单:

dicto = dict()
for child in root_node:
    dicto.setdefault(child[0], child[1])