Scrapy簡明チュートリアル(3)-CSDNのブログを読み、ファイルに書き込む
このブログでは、ScrapyがCSDNブログの詳細ページにアクセスし、ファイルに書き込む方法について説明します.http://blog.csdn.net/oscer2016/article/details/78007472このブログは例です.
1.次のコマンドを実行します.
2.settingsを作成する.py :
ユーザーエージェントの設定、ITEM_の解除PIPELINESコメント、ユーザーエージェントはレビュー要素で表示できます.
3.抽出するデータドメイン(items.py):
4.piplinesを作成する.py:
5.爬虫類コードの作成:
6.運行項目:
これで、ブログ関連データは正しく抽出され、ファイルに保存された.次のブログでは、CSDNのすべてのブログ専門家のすべてのブログを登録し、MongoDBに保存することを紹介する.
1.次のコマンドを実行します.
scrapy startproject csdnblog
cd csdnblog/
scrapy genspider -t basic spider_csdnblog csdn.net
2.settingsを作成する.py :
ユーザーエージェントの設定、ITEM_の解除PIPELINESコメント、ユーザーエージェントはレビュー要素で表示できます.
#
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
これで、ブログ関連データは正しく抽出され、ファイルに保存された.次のブログでは、CSDNのすべてのブログ専門家のすべてのブログを登録し、MongoDBに保存することを紹介する.