Scrapy爬虫類フレームワーク入門
1、強く推薦するScrapyフレームワーク教程:http://blog.csdn.net/column/details/younghz-scrapy.html
2、フレームワークの説明:
2.1:
フレームワークを整理するには、初心者が参加する必要があるのはSpidersとitem Pipelineモジュールです.
各モジュールの役割:
Spiderモジュール:Webページの解析とurlリクエストの送信.
Itemモジュール:保存データのフォーマットを定義し、辞書で保存し、N個のフィールドを定義できる
Pipelineモジュール:定義解析後のデータをファイルに書き込む
以下の具体例を説明する.
コードは借用ブログです.http://blog.csdn.net/u012150179/article/details/34486677
Spiderモジュールでは、データを解析し、新しいURLリクエストを送信する必要があります.もちろん、新しいURLも解析ページで得られます.
関数#カンスウ#
1、responseはscrapyフレームワーク全体であり、制御センターは要求をダウンロード器に送信し、ダウンロード器はウェブページ全体をダウンロードした後、制御センターから結果(Response)をspider解析に返信する(spiderがウェブページを解析する機能はここで体現する).もちろん、Responseという結果では、再アクセスが必要なurlを解析し、URLリクエストを送信し続けることができ、Requestリクエストで完了することができます.
2、parseでは、私たちが必要とするデータを解析し、yield itemを取得すれば、私たちのデータを得ることができます.データフォーマットについては、itemの定義、データがどのコードに保存されているか、どのファイルがあるか、pipelineを見ます.
3、それからresponseの中であなたが引き続きアクセスしたいURLを含んで解析して、要求を送信して、スケジューラがどのようにスケジューラをスケジューリングして、ダウンロードして、スケジューラは更に結果を返すなどの一連の過程について、私达が介入する必要はなくて、これはフレームワークの作用で、私达は関数を記入するだけでいいです.
iitem:各レコードのフィールドを定義する
pipeline:結果がどこに存在するか、どのコードに格納されるかを定義します.
2、フレームワークの説明:
2.1:
フレームワークを整理するには、初心者が参加する必要があるのはSpidersとitem Pipelineモジュールです.
各モジュールの役割:
Spiderモジュール:Webページの解析とurlリクエストの送信.
Itemモジュール:保存データのフォーマットを定義し、辞書で保存し、N個のフィールドを定義できる
Pipelineモジュール:定義解析後のデータをファイルに書き込む
以下の具体例を説明する.
コードは借用ブログです.http://blog.csdn.net/u012150179/article/details/34486677
Spiderモジュールでは、データを解析し、新しいURLリクエストを送信する必要があります.もちろん、新しいURLも解析ページで得られます.
#!/usr/bin/python
# -*- coding:utf-8 -*-
# from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.spider import Spider
from scrapy.http import Request
from scrapy.selector import Selector
from CSDNBlog.items import CsdnblogItem
class CSDNBlogSpider(Spider):
""" CSDNBlogSpider"""
name = "CSDNBlog"
# 1s
download_delay = 1
allowed_domains = ["blog.csdn.net"]
start_urls = [
#
"http://blog.csdn.net/u012150179/article/details/11749017"
]
def parse(self, response):
sel = Selector(response)
#items = []
# url
item = CsdnblogItem()
article_url = str(response.url)
article_name = sel.xpath('//div[@id="article_details"]/div/h1/span/a/text()').extract()
item['article_name'] = [n.encode('utf-8') for n in article_name]
item['article_url'] = article_url.encode('utf-8')
yield item
# url
urls = sel.xpath('//li[@class="next_article"]/a/@href').extract()
for url in urls:
print url
url = "http://blog.csdn.net" + url
print url
yield Request(url, callback=self.parse)
関数#カンスウ#
def parse(self, response)
1、responseはscrapyフレームワーク全体であり、制御センターは要求をダウンロード器に送信し、ダウンロード器はウェブページ全体をダウンロードした後、制御センターから結果(Response)をspider解析に返信する(spiderがウェブページを解析する機能はここで体現する).もちろん、Responseという結果では、再アクセスが必要なurlを解析し、URLリクエストを送信し続けることができ、Requestリクエストで完了することができます.
2、parseでは、私たちが必要とするデータを解析し、yield itemを取得すれば、私たちのデータを得ることができます.データフォーマットについては、itemの定義、データがどのコードに保存されているか、どのファイルがあるか、pipelineを見ます.
3、それからresponseの中であなたが引き続きアクセスしたいURLを含んで解析して、要求を送信して、スケジューラがどのようにスケジューラをスケジューリングして、ダウンロードして、スケジューラは更に結果を返すなどの一連の過程について、私达が介入する必要はなくて、これはフレームワークの作用で、私达は関数を記入するだけでいいです.
iitem:各レコードのフィールドを定義する
# -*- coding:utf-8 -*-
from scrapy.item import Item, Field
class CsdnblogItem(Item):
""" """
article_name = Field()
article_url = Field()
pipeline:結果がどこに存在するか、どのコードに格納されるかを定義します.
import json
import codecs
class CsdnblogPipeline(object):
def __init__(self):
self.file = codecs.open('CSDNBlog_data.json', mode='wb', encoding='utf-8')
def process_item(self, item, spider):
line = json.dumps(dict(item)) + '
'
self.file.write(line.decode("unicode_escape"))
return item