如何将某个robots.txt值的值存储在数组中,可以通过数组访问。示例:网站有一个robots.txt,如下所示:
# Comment
Disallow: /link1
Disallow: /abcdefg
Disallow: /fish
Disallow: /salad
删除注释,然后将文本存储到数组中。所以你不会有价值和不允许:/ link1"但它将存储为" / link1"
这是我的代码(来自有些人可能知道的教程):
import urllib.request
import io
def get_robots_txt(url):
if url.endswith('/'):
path = url
else:
path = url + '/'
req = urllib.request.urlopen(path + 'robots.txt', data=None)
data = io.TextIOWrapper(req, encoding='utf-8')
return data.read()
print(get_robots_txt('http://www.stackoverflow.com'))
input()
上面的内容基本上是一个URL并将所有内容存储在robots.txt中,然后在你去robots.txt时打印出来就像它在网站上看起来一样。我需要的是在那之后只将notallow之后的文本存储到一个数组中,所以它会忽略注释(跳过第一行),然后是第三次删除" Disallow:"并存储" / link1"成阵列。它会在每一行之后执行此操作然后我会有一个像[" / link1"," / abcdefg"," / fish"," / salad"]抱歉,如果这是具体的,但我完全不知道如何开始做这样的事情。谢谢你的一切
答案 0 :(得分:0)
total = []
for line in lines:
link = line.split(“ “)[1:]
total.append(link)
那应该有用。如果那不是你想要的,请告诉我。
答案 1 :(得分:0)
我将您希望的代码放入函数中,以便返回一个列表 局部变量会自动清理。
该函数将机器人字符串作为参数,带有可选项
关键论点。
它将机器人字符串拆分为一系列行。然后分区
使用": "
作为分隔符来返回键,分隔符和值
一个元组。然后检查密钥以将值附加到新列表
或不。一旦完成循环,它将返回新列表。
def part_robots_txt(robots_txt, key='Disallow'):
value_list = []
# Split on '\n' to make a list of lines.
for line in robots_txt.split('\n'):
# Part on ': ' to split into (key, sep, value).
line = line.partition(': ')
# Check part key with argument key and append to list if True.
if line[0] == key:
value_list.append(line[2])
return value_list
disallow_list = part_robots_txt(data)
print(disallow_list)