国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

scrapy學習筆記(三):使用item與pipeline保存數據

13651657101 / 2908人閱讀

摘要:最近真是忙的吐血。。。上篇寫的是直接在爬蟲中使用,這樣不是很好,下使用才是正經方法。

最近真是忙的吐血。。。

上篇寫的是直接在爬蟲中使用mongodb,這樣不是很好,scrapy下使用item才是正經方法。
在item中定義需要保存的內容,然后在pipeline處理item,爬蟲流程就成了這樣:

抓取 --> 按item規則收集需要數據 -->使用pipeline處理(存儲等)

定義item,在items.py中定義抓取內容

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

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class GetquotesItem(scrapy.Item):
    # define the fields for your item here like:
    # 定義我們需要抓取的內容:
    # 1.名言內容
    # 2.作者
    # 3.標簽
    content = scrapy.Field()
    author = scrapy.Field()
    tags = scrapy.Field()

我們將數據庫的配置信息保存在setting.py文件中,方便調用

MONGODB_HOST = "localhost"
MONGODB_PORT = 27017
MONGODB_DBNAME = "store_quotes2"
MONGODB_TABLE = "quotes2"

另外,在setting.py文件中一點要將pipeline注釋去掉,要不然pipeline不會起作用:

#ITEM_PIPELINES = {
#    "getquotes.pipelines.SomePipeline": 300,
#}

改成

ITEM_PIPELINES = {
    "getquotes.pipelines.GetquotesPipeline": 300,
}

現在在pipeline.py中定義處理item方法:

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

# Define your item pipelines here
#
# Don"t forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html

# 將setting導入,以使用定義內容
from scrapy.conf import settings
import pymongo

class GetquotesPipeline(object):

    # 連接數據庫
    def __init__(self):
        
        # 獲取數據庫連接信息
        host = settings["MONGODB_HOST"]
        port = settings["MONGODB_PORT"]
        dbname = settings["MONGODB_DBNAME"]
        client = pymongo.MongoClient(host=host, port=port)
        
        # 定義數據庫
        db = client[dbname]
        self.table = db[settings["MONGODB_TABLE"]]
    
    # 處理item
    def process_item(self, item, spider):
            # 使用dict轉換item,然后插入數據庫
            quote_info = dict(item)
            self.table.insert(quote_info)
            return item

相應的,myspider.py中的代碼變化一下

import scrapy
import pymongo

# 別忘了導入定義的item
from getquotes.items import GetquotesItem

class myspider(scrapy.Spider):

    # 設置爬蟲名稱
    name = "get_quotes"

    # 設置起始網址
    start_urls = ["http://quotes.toscrape.com"]

    """
        # 配置client,默認地址localhost,端口27017
        client = pymongo.MongoClient("localhost",27017)
        # 創建一個數據庫,名稱store_quote
        db_name = client["store_quotes"]
        # 創建一個表
        quotes_list = db_name["quotes"]
    """
    def parse(self, response):

        #使用 css 選擇要素進行抓取,如果喜歡用BeautifulSoup之類的也可以
        #先定位一整塊的quote,在這個網頁塊下進行作者、名言,標簽的抓取
        for quote in response.css(".quote"):
            """
            # 將頁面抓取的數據存入mongodb,使用insert
            yield self.quotes_list.insert({
                "author" : quote.css("small.author::text").extract_first(),
                "tags" : quote.css("div.tags a.tag::text").extract(),
                "content" : quote.css("span.text::text").extract_first()
            })
            """
            item = GetquotesItem()
            item["author"] = quote.css("small.author::text").extract_first()
            item["content"] = quote.css("span.text::text").extract_first()
            item["tags"] = quote.css("div.tags a.tag::text").extract()
            yield item


        # 使用xpath獲取next按鈕的href屬性值
        next_href = response.xpath("http://li[@class="next"]/a/@href").extract_first()
        # 判斷next_page的值是否存在
        if next_href is not None:

            # 如果下一頁屬性值存在,則通過urljoin函數組合下一頁的url:
            # www.quotes.toscrape.com/page/2
            next_page = response.urljoin(next_href)

            #回調parse處理下一頁的url
            yield scrapy.Request(next_page,callback=self.parse)

可以再scrapy輸出信息中看到pipeline啟用

再來看看數據庫保存情況

完美保存

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38619.html

相關文章

  • scrapy學習筆記

    摘要:是最有名的爬蟲框架之一,可以很方便的進行抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一些常見問題一安裝在安裝之前有一些依賴需要安裝,否則可能會安裝失敗,的選擇器依賴于,還有網絡引擎,下面是下安裝的過程下安裝安裝 scrapy是python最有名的爬蟲框架之一,可以很方便的進行web抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一...

    luzhuqun 評論0 收藏0
  • Python Scrapy爬蟲框架學習

    摘要:組件引擎負責控制數據流在系統中所有組件中流動,并在相應動作發生時觸發事件。下載器下載器負責獲取頁面數據并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。 Scrapy 是用Python實現一個為爬取網站數據、提取結構性數據而編寫的應用框架。 一、Scrapy框架簡介 Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 ...

    harriszh 評論0 收藏0
  • Scrapy 框架入門簡介

    摘要:解析的方法,每個初始完成下載后將被調用,調用的時候傳入從每一個傳回的對象來作為唯一參數,主要作用如下負責解析返回的網頁數據,提取結構化數據生成生成需要下一頁的請求。 Scrapy 框架 Scrapy是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛。 框架的力量,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常...

    Coding01 評論0 收藏0
  • python使用Scrapy框架抓取起點中文網免費小說案例

    摘要:使用工具一使用創建項目過程略二安裝框架三創建項目創建爬蟲項目創建爬蟲,先進入爬蟲項目目錄創建完成后項目目錄如下目錄下的的就是我們的爬蟲文件四打開編寫爬蟲的代碼進入需要爬去的書的目錄,找到開始設置鬼吹燈圖書目錄在創建項目的時候,篩選的地址為打 使用工具,ubuntu,python,pycharm一、使用pycharm創建項目:過程略二、安裝scrapy框架 pip install Scr...

    khlbat 評論0 收藏0
  • Scrapy 實戰之爬取妹子圖

    摘要:很多人學習爬蟲的第一驅動力就是爬取各大網站的妹子圖片,比如比較有名的。最后我們只需要運行程序,即可執行爬取,程序運行命名如下完整代碼我已上傳到微信公眾號后臺,在癡海公眾號后臺回復即可獲取。本文首發于公眾號癡海,后臺回復即可獲取最新編程資源。 showImg(https://segmentfault.com/img/remote/1460000016780800); 閱讀文本大概需要 1...

    Achilles 評論0 收藏0

發表評論

0條評論

13651657101

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<