使用两个列表,对每个列表进行迭代。以下是代码段:
self.links = []
self.iter=iter(self.links)
for tgt in self.links:
for link in self.mal_list:
print(link)
if tgt == link:
print("Found Suspicious Link: {0}".format(tgt))
self.count += 1
else:
self.count += 1
self.crawl(self.iter.next())
它前进到链接列表中的下一项,很好。对于恶意软件签名列表,我尝试使用一个类似的iter项,但我不完全确定这是否是最好的方法,如果是这样的话,请将它放在我的代码中,以便在循环打开链接列表中的下一个项之前,将列表中url打开的每个链接与恶意软件列表中的每个项进行比较。有什么建议吗?在
你做这件事的基本方法是好的,但会很慢。在
试试这个:
我不明白你为什么要让两个迭代器遍历列表。这将引入一个bug,因为在检测到恶意软件链接的情况下,不会调用
next
上的self.iter
。下一次tgt
不是坏链接,当您调用next
时,它将前进到先前检测到的坏链接,您将对此进行爬网。有没有什么原因让您觉得需要跨越迭代器的两个副本而不是一个副本?在此外,您的初始代码将抓取一次网页,每次它不是确定为等于一个给定的恶意软件链接。这可能会导致一些愤怒的网站管理员,这取决于你的列表有多大。在
搜索列表中的项目很慢,如果这是您要做的,那么使用
dict
或set
来代替self.mal_list
:或者,如果你能自我链接以及设置:
^{pr2}$不确定,你想问什么,但你可以简化你的代码。虽然这不是必须的。在
关于代码的一些问题:
除了意义自我计数,其他一切看起来都像是在做它需要做的事情。在
相关问题 更多 >
编程相关推荐