Scrapy實戰之儲存在Excel中

2021-10-02 22:16:18 字數 2720 閱讀 3634

爬取自己在csdn部落格的資料(並儲存在excel中。

scrapy startproject csdn

scrapy genspider csdnspider blog.csdn.net "blog.csdn.net"

# -*- coding: utf-8 -*-

import scrapy

class csdnitem(scrapy.item):

#w文章名稱

name = scrapy.field()

#**csdnurl = scrapy.field()

#內容概括

content = scrapy.field()

#發布時間

creattime = scrapy.field()

#閱讀數

readnum = scrapy.field()

# -*- coding: utf-8 -*-

import scrapy

from csdn.items import csdnitem

class csdnspiderspider(scrapy.spider):

name = 'csdnspider'

allowed_domains = ['blog.csdn.net']

offset = 1

url = ""

start_urls = (

url + str(offset),

)def parse(self, response):

item = csdnitem()

articles = response.xpath("//div[@class='article-item-box csdn-tracking-statistics']")

for each in articles:

item['name'] = each.xpath("./h4/a//text()").extract()[2].strip()

item['csdnurl'] = each.xpath("./h4/a/@href").extract()[0].strip()

item['content'] = each.xpath("./p[@class='content']/a/text()").extract()[0].strip()

item['creattime'] = each.xpath("./div//span[@class='date']/text()").extract()[0].strip()

item['readnum'] = each.xpath("./div//span[@class='num']/text()").extract()[0].strip()

yield item

if self.offset < 13:

self.offset += 1

yield scrapy.request(self.url + str(self.offset), callback=self.parse)

# -*- coding: utf-8 -*-

# 檔案處理類庫,可以指定編碼格式

import os

import csv

class csdnpipeline(object):

def __init__(self):

# csv檔案的位置,無需事先建立

store_file = os.path.dirname(__file__) + '/spiders/csdn.csv'

# 開啟(建立)檔案

self.file = open(store_file, 'wb')

# csv寫法

self.writer = csv.writer(self.file, dialect="excel")

def process_item(self, item, spider):

if item['name']:

# 主要是解決存入csv檔案時出現的每乙個字以『,』隔離

self.writer.writerow(

[item['name'].encode('utf8','ignore'),item['csdnurl'].encode('utf8','ignore'), item['content'].encode('utf8','ignore'), item['creattime'], item['readnum']])

return item

def spider_closed(self, spider):

self.file.close()

item_pipelines =
#!/usr/bin/env python

# -*- coding:utf-8 -*-

from scrapy import cmdline

cmdline.execute("scrapy crawl csdnspider".split())

驗證結果如下:

Scrapy實戰之儲存在MongoDB中

爬取豆瓣電影top250的電影資料 並儲存在mongodb中。scrapy startproject douban scrapy genspider doubanspider movie.douban.com class doubanspideritem scrapy.item 電影標題 title...

Scrapy學習篇(四)之資料儲存

修改items.py檔案來定義我們的item item 是儲存爬取到的資料的容器 其使用方法和python字典類似。雖然你也可以在scrapy中直接使用dict,但是item提供了額外保護機制來避免拼寫錯誤導致的未定義字段錯誤。簡單的來說,你所要儲存的任何的內容,都需要使用item來定義,比如我們現...

虛擬化實戰 儲存設計之七Block Size

在 實戰儲存設計之六latnecy 我們介紹latency過高的原因和一些建議。本文重點分析block size對效能特別是latency的影響。什麼是block size?block size這個詞在不同的語境中有不同含義。在此文中指的是在os中執行的應用發出乙個io讀或寫請求所傳送的資料單元的大...