用csv文件scrapy复制过滤器

时间:2013-08-01 03:32:41

标签: csv duplicates scrapy

我试图避免多次抓取相同的信息,我每天早上运行这个蜘蛛从工作板上抓取工作,然后我将它们复制到excel并使用URL按列表中的删除重复项。我想在scrapy中做到这一点(我可以将txt文件更改为csv)。我很乐意实现中间件

这是我试图使用的pipleing

class CraigslistSamplePipeline(object):



    def find_row_by_id(item):
        with open('URLlog.txt', 'r') as f:                # open my txt file with urls from previous scrapes
            urlx = [url.strip() for url in f.readlines()] # extract each url
            if urlx == item ["website_url"]:              # compare old url to URL being scraped
            raise DropItem('Item already in db')      # skip record if in url list
        return

我确定这段代码是错误的,有人可以建议我如何做到这一点,我是非常新的,所以解释每一行将有助于我很多。我希望我的问题有道理,有人可以帮助我

我看过这些帖子寻求帮助,但无法解决我的问题:

How to Filter from CSV file using Python Script

Scrapy - Spider crawls duplicate urls

how to filter duplicate requests based on url in scrapy

1 个答案:

答案 0 :(得分:0)

使用in关键字。像这样:

 if item['website_url'] in urlx:
      raise DropItem('Item already in db')

您从每个行都是网址的文件中加载了urlx。它现在是一个列表。 in关键字会检查网站网址是否在列表urlx中。如果是,则返回true。请记住,在我的示例中,比较区分大小写。您可能需要在网站网址和从文件加载的网址上调用.lower()

有更有效的方法可以做到这一点,但我想你只是想要一些有用的东西。