爬取豆瓣電影top250的電影資料(並儲存在mongodb中。
scrapy startproject doubanscrapy genspider doubanspider "movie.douban.com"
class doubanspideritem(scrapy.item):
# 電影標題
title = scrapy.field()
# 電影評分
score = scrapy.field()
# 電影資訊
content = scrapy.field()
# 簡介
info = scrapy.field()
import scrapy
from doubanspider.items import doubanspideritem
class doubanspider(scrapy.spider):
name = "douban"
allowed_domains = ["movie.douban.com"]
start = 0
url = ''
end = '&filter='
start_urls = [url + str(start) + end]
def parse(self, response):
item = doubanspideritem()
movies = response.xpath("//div[@class=\'info\']")
for each in movies:
title = each.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract()
content = each.xpath('div[@class="bd"]/p/text()').extract()
score = each.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()
info = each.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()
item['title'] = title[0]
# 以;作為分隔,將content列表裡所有元素合併成乙個新的字串
item['content'] = ';'.join(content)
item['score'] = score[0]
item['info'] = info[0]
# 提交item
yield item
if self.start <= 225:
self.start += 25
yield scrapy.request(self.url + str(self.start) + self.end, callback=self.parse)
# -*- coding: utf-8 -*-
import pymongo
from scrapy.utils.project import get_project_settings
class doubanpipeline(object):
def __init__(self):
settings = get_project_settings()
host = settings["mongodb_host"]
port = settings["mongodb_port"]
dbname = settings["mongodb_dbname"]
sheetname= settings["mongodb_sheetname"]
# 建立mongodb資料庫鏈結
client = pymongo.mongoclient(host = host, port = port)
# 指定資料庫
mydb = client[dbname]
# 存放資料的資料庫表名
self.sheet = mydb[sheetname]
def process_item(self, item, spider):
data = dict(item)
self.sheet.insert(data)
return item
bot_name = 'doubanspider'
spider_modules = ['doubanspider.spiders']
newspider_module = 'doubanspider.spiders'
item_pipelines =
# crawl responsibly by identifying yourself (and your website) on the user-agent
# mongodb 主機環迴位址127.0.0.1
mongodb_host = '127.0.0.1'
# 埠號,預設是27017
mongodb_port = 27017
# 設定資料庫名稱
mongodb_dbname = 'douban'
# 存放本次資料的表名稱
mongodb_docname = 'doubanmovies'
啟動mongodb資料庫需要兩個命令:
mongod:是mongodb資料庫程序本身
mongo:是命令列shell客戶端
sudo mongod # 首先啟動資料庫服務,再執行scrapy
sudo mongo # 啟動資料庫shell
在mongo shell下使用命令:
# 檢視當前資料庫
> db
# 列出所有的資料庫
> show dbs
# 連線douban資料庫
> use douban
# 列出所有表
> show collections
# 檢視表裡的資料
> db.doubanmoives.find()
驗證結果如下:
Scrapy實戰之儲存在Excel中
爬取自己在csdn部落格的資料 並儲存在excel中。scrapy startproject csdn scrapy genspider csdnspider blog.csdn.net blog.csdn.net coding utf 8 import scrapy class csdnitem ...
Scrapy學習篇(四)之資料儲存
修改items.py檔案來定義我們的item item 是儲存爬取到的資料的容器 其使用方法和python字典類似。雖然你也可以在scrapy中直接使用dict,但是item提供了額外保護機制來避免拼寫錯誤導致的未定義字段錯誤。簡單的來說,你所要儲存的任何的內容,都需要使用item來定義,比如我們現...
虛擬化實戰 儲存設計之七Block Size
在 實戰儲存設計之六latnecy 我們介紹latency過高的原因和一些建議。本文重點分析block size對效能特別是latency的影響。什麼是block size?block size這個詞在不同的語境中有不同含義。在此文中指的是在os中執行的應用發出乙個io讀或寫請求所傳送的資料單元的大...