爬取自己在csdn部落格的資料(並儲存在excel中。
scrapy startproject csdnscrapy 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讀或寫請求所傳送的資料單元的大...