我试图避免多次抓取相同的信息,我每天早上运行这个蜘蛛从工作板上抓取工作,然后我将它们复制到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
答案 0 :(得分:0)
使用in
关键字。像这样:
if item['website_url'] in urlx:
raise DropItem('Item already in db')
您从每个行都是网址的文件中加载了urlx
。它现在是一个列表。 in
关键字会检查网站网址是否在列表urlx
中。如果是,则返回true。请记住,在我的示例中,比较区分大小写。您可能需要在网站网址和从文件加载的网址上调用.lower()
。
有更有效的方法可以做到这一点,但我想你只是想要一些有用的东西。