擅长:python、mysql、java
<p>你做这件事的基本方法是好的,但会很慢。在</p>
<p>试试这个:</p>
<pre><code> for tgt in links:
if tgt in mal_links:
# you know that it's a bad link
else:
crawl(tgt)
</code></pre>
<p>我不明白你为什么要让两个迭代器遍历列表。这将引入一个bug,因为在检测到恶意软件链接的情况下,不会调用<code>next</code>上的<code>self.iter</code>。下一次<code>tgt</code>不是坏链接,当您调用<code>next</code>时,它将前进到先前检测到的坏链接,您将对此进行爬网。有没有什么原因让您觉得需要跨越迭代器的两个副本而不是一个副本?在</p>
<p>此外,您的初始代码将抓取一次网页,每次它不是确定为等于一个给定的恶意软件链接。这可能会导致一些愤怒的网站管理员,这取决于你的列表有多大。在</p>