Scrapy簡明チュートリアル(3)-CSDNのブログを読み、ファイルに書き込む


このブログでは、ScrapyがCSDNブログの詳細ページにアクセスし、ファイルに書き込む方法について説明します.http://blog.csdn.net/oscer2016/article/details/78007472このブログは例です.
Scrapy简明教程(三)——爬取CSDN博文并写入文件_第1张图片
1.次のコマンドを実行します.
scrapy startproject csdnblog
cd csdnblog/
scrapy genspider -t basic spider_csdnblog csdn.net

2.settingsを作成する.py :
ユーザーエージェントの設定、ITEM_の解除PIPELINESコメント、ユーザーエージェントはレビュー要素で表示できます.
Scrapy简明教程(三)——爬取CSDN博文并写入文件_第2张图片
#       
vim csdnblog/settings.py
USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'

ITEM_PIPELINES = {
    'csdnblog.pipelines.CsdnblogPipeline': 300,
}

3.抽出するデータドメイン(items.py):
vim csdnblog/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 CsdnblogItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    url = scrapy.Field()
    releaseTime = scrapy.Field()
    readnum = scrapy.Field()
    article = scrapy.Field()

4.piplinesを作成する.py:
vim csdnblog/pipelines.py
# -*- 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

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re

class CsdnblogPipeline(object):
    def process_item(self, item, spider):
        data = re.findall("http://blog.csdn.net/(.*?)/article/details/(\d*)", item['url'])
        #      
        filename = data[0][0] + '_' + data[0][1] + '.txt'
        text = "  : " + item['title'] + "
: "
+ item['url'] + "
: "
\ + item['releaseTime'] + "

: "
+ item['article'] fp = open(filename, 'w') fp.write(text) fp.close() return item

5.爬虫類コードの作成:
vim csdnblog/spiders/spider_csdnblog.py
# -*- coding: utf-8 -*-

import scrapy
import re
from scrapy import Request
from csdnblog.items import CsdnblogItem

class SpiderCsdnblogSpider(scrapy.Spider):
    name = 'spider_csdnblog'
    allowed_domains = ['csdn.net']
    start_urls = ['http://blog.csdn.net/oscer2016/article/details/78007472']

    def parse(self, response):
        item = CsdnblogItem()

        #           
        item['url'] = response.url
        item['title'] = response.xpath('//h1[@class="csdn_top"]/text()').extract()[0].encode('utf-8')
        item['releaseTime'] = response.xpath('//span[@class="time"]/text()').extract()[0].encode('utf-8')
        item['readnum'] = response.xpath('//button[@class="btn-noborder"]/span/text()').extract()[0]
        data = response.xpath('//div[@class="markdown_views"]')
        item['article'] = data.xpath('string(.)').extract()[0]

        #      pipelines.py,      
        yield item

6.運行項目:
scrapy crawl spider_csdnblog --nolog

Scrapy简明教程(三)——爬取CSDN博文并写入文件_第3张图片
 これで、ブログ関連データは正しく抽出され、ファイルに保存された.次のブログでは、CSDNのすべてのブログ専門家のすべてのブログを登録し、MongoDBに保存することを紹介する.