我构建/扩展了一个 Python 网络爬虫,它通过一个站点并构建一个字典来存储它找到的内容(如果有人感兴趣,这是我使用的模板,它非常好:http ://berrytutorials.blogspot.ca/2010/03 /simple-web-crawler-in-python-using.html)。字典比这多一点,但就这个问题而言,单个项目本质上是 form {page_url : html}
,其中 html 是字符串形式的页面的整个 html。
爬虫被构建为不会两次索引同一页面,但模板作者指出的一个潜在问题很容易出现,因为 url 参数不同,爬虫将相同的页面识别为不同的页面。例如,www.example.com/path?param=1 和 www.example.com/path?param=2 都将被添加到字典中,因为 url 在技术上是不同的,即使每个页面的内容可能相同,或几乎相同。我能想到解决这个问题的唯一方法是在抓取完成后将存储在字典中的大量 html 字符串相互比较,看看是否有任何匹配 - 基本上只是
if html_str_1 == html_str_2:
# eliminate one of them
对于每一个可能的配对。但显然这将非常耗费资源和时间。
有谁知道更好的方法来实现这一点?我还希望能够检测到几乎相同的 html,这些 html 可能仅相差几个微不足道的字符。我是 Python 新手,所以我对那里的各种库不是很熟悉。也许 BeautifulSoup 可以做这样的事情?
(注意:我知道对于我给出的示例,我可以在分析它们之前从 url 中解析出任何参数,但这只是重复 html 的一个可能原因,我想涵盖所有内容。此外,不同的参数可能会导致截然不同某些情况下的页面。)