【发布时间】:2017-07-11 21:20:38
【问题描述】:
我制作了一个简单的 Scrapy 爬虫,用于获取我所在城市的房价广告。
它收集以下数据:广告标题、价格和 URL。然后输出一个 CSV 文件。
每周我都会运行爬虫,我希望它将最新的 CSV 文件与之前的文件进行比较,以检查是否有任何广告已被删除。如果有的话,我希望它在 CSV 文件输出的 LAST SEEN 列中包含今天的日期。
我不知道这是否可以使用 CSV 文件完成,或者这项工作是否需要数据库。我也不知道是否需要创建一个item pipeline。
这是我目前的蜘蛛代码。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
start_urls = [
'http://www.example.com/'
]
def parse(self, response):
for item in response.css('li.item a.list-link::attr(href)').extract():
yield scrapy.Request(item, callback=self.parse_item)
next_page = response.xpath('//a[@title="Next page"]/@href').extract_first()
if next_page is not None:
yield scrapy.Request(next_page, callback=self.parse)
def parse_item(self, response):
title = response.css('h1.ad-title::text').extract_first()
price = response.css('span.price::text').extract_first()
yield {
'TITLE': title,
'PRICE': price,
'URL': response.url
}
【问题讨论】:
-
你需要一个数据库
标签: python database csv web-scraping scrapy