English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PythonのScrapyスパイダーフレームワークのインストールと簡単な使用の詳細

序章:python スパイダー フレームワークの名前をよく聞いていました。最近、その中のScrapy スパイダー フレームワークを学びました。自分の理解を共有します。説明が不適切な部分があれば、大神たちの指摘をお願いします。

一、Scrapyの初歩的な理解

Scrapyは、ウェブサイトのデータを爬取し、構造化データを抽出するために書かれたアプリケーションフレームワークです。データマイニング、情報処理、または歴史的データの保存などの一連のプログラムに適用できます。

これは最初にページキャプチャ(より正確には、ネットワークキャプチャ)によって設計されており、APIが返すデータ(例えばAmazon Associates Web Services)または一般的なウェブスパイダー。

このドキュメントは、Scrapyの背後の概念を紹介し、Scrapyが必要なものかどうかを理解するために役立ちます。

プロジェクトを開始する準備ができたら、以下を参照してください初級教程

二、Scrapyのインストール紹介

Scrapy フレームワークの実行プラットフォームおよび関連するアシスタントツール

  1. Python2.7(Python最新版3.5、ここでは選択しました2.7バージョン)
  2. Python パッケージ:pipandsetuptools。現在pipはsetuptoolsに依存しており、未インストールの場合は自動的にsetuptoolsをインストールします。
  3. lxml. 大多数のLinuxディストリビューションにはlxmlが標準で含まれています。欠けている場合は、確認してください。http://lxml.de/installation.html
  4. OpenSSL。Windows以外のシステムではすべて提供されています(プラットフォームのインストールガイドを参照してください)。

Scrapyをインストールするにはpipを使用できます(Pythonパッケージをインストールする場合はpipを使用することをお勧めします)。

pip install Scrapy

Windows上のインストール手順:

1、Pythonをインストール 2.7その後、PATH環境変数を変更し、Pythonの実行可能ファイルおよび追加のスクリプトをシステムパスに追加する必要があります。以下のパスをPATHに追加してください:

C:\Python27\;C:\Python27\Scripts\;

これに加えて、cmdコマンドを使用してPathを設定することもできます:

c:\python27\python.exe c:\python27\tools\scripts\win_add2path.py

インストールと設定が完了した後、以下のコマンドを実行できます:python --versionでインストールされたPythonのバージョンを確認してください。(図に示されています。)

2、からhttp://sourceforge.net/projects/pywin32/インストールpywin32

ご確認ください、ダウンロードされたバージョンがシステムに適合しています(win32またはamd64

からhttps://pip.pypa.io/en/latest/installing.htmlpipをインストール

3、コマンドラインウィンドウを開き、pipが正しくインストールされていることを確認します:

pip --バージョン

4、今までのPython 2.7 及びpipが正しく動作していることを確認後、次にScrapyをインストールします:

pip install Scrapy

これでWindows上のScrapyのインストールは完了です。

三、Scrapy入門チュートリアル

1、cmdでScrapyプロジェクトエンジンを作成します。

scrapy startproject tutorial

H:\python\scrapyDemo>scrapy startproject tutorial
新しいScrapyプロジェクト 'tutorial'、テンプレートディレクトリ 'f:\\python27\\lib\\site-packages\\scrapy\\templates\\project', created in:
  H:\python\scrapyDemo\tutorial
最初のスパイダーを開始するには:
  cd tutorial
  scrapy genspider example example.com

2、文件目錄結構如下:

解析scrapy框架結構:

  1. scrapy.cfg: 项目的配置文件。
  2. tutorial/: 该项目的python模块。之後您將在此加入代碼。
  3. tutorial/items.py: 项目中的item文件。
  4. tutorial/pipelines.py: 项目中的pipelines文件。
  5. tutorial/settings.py: 项目的设置文件。
  6. tutorial/spiders/: 放置spider代碼的目錄。

3、編寫簡單的爬蟲

1、在item.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
from scrapy.item import Item, Field
class TutorialItem(Item):
  title = Field()
  author = Field()
  releasedate = Field()

2、在tutorial/spiders/spider.py中書寫要采集的网站以及分別采集各字段。

# -*-coding:utf-8-*-
import sys
from scrapy.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from tutorial.items import TutorialItem
reload(sys)
sys.setdefaultencoding("utf-8)
class ListSpider(CrawlSpider):
  # 爬蟲名稱
  name = "tutorial"
  # 設置下載延時
  download_delay = 1
  # 允許域名
  allowed_domains = ["news.cnblogs.com"]
  # 開始URL
  start_urls = [
    "https://news.cnblogs.com"
  ]
  # 爬取規則,不带callback表示向該類url遞迴爬取
  rules = (
    ////page/
    ////+
  
  
  
    
    
    //div[@id="news_title"]-8')
    item['title'] = title
    author = response.selector.xpath('//div[@id="news_info"]/span/a/text()')[0].extract().decode('utf-8')
    item['author'] = author
    releasedate = response.selector.xpath('//div[@id="news_info"]//text()')[0].extract().decode(
      'utf-8')
    item['releasedate'] = releasedate
    yield item

3、在tutorial/pipelines.pyパイプラインにデータを保存。

# -*- coding: utf-8 -*-
# ここでアイテムパイプラインを定義
#
# 忘れずにITEM_PIPELINES設定にパイプラインを追加
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
import codecs
class TutorialPipeline(object):
  def __init__(self):
    self.file = codecs.open('data.json', mode='wb', encoding='utf-8')#データをdata.jsonに保存
  def process_item(self, item, spider):
    line = json.dumps(dict(item)) + "\n"
    self.file.write(line.decode("unicode_escape"))
    return item

4、tutorial/settings.pyに実行環境を設定します。

# -*- coding: utf-8 -*-
BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
# コokiesを無効にし、banを防ぎます
COOKIES_ENABLED = False
COOKIES_ENABLES = False
# Pipelineを設定します。ここではデータをファイルに書き込みます
ITEM_PIPELINES = {
  'tutorial.pipelines.TutorialPipeline': 300
}
# スパイダーが爬取する最大深度を設定します
DEPTH_LIMIT = 100

5、mainファイルを新規作成してスパイダーのコードを実行します。

from scrapy import cmdline
cmdline.execute("scrapy crawl tutorial".split())

最終的に、main.pyを実行し、data.jsonファイルから収集結果のJSONデータを取得します。

これで本文のすべての内容が終わりました。皆様の学習に役立つことを願っています。また、呐喊教程を多くのサポートをお願いします。

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、アップロードされた内容であり、本サイトは所有権を有しない、また人工編集は行われていない、さらに関連する法的責任も負いません。著作権に抵触する内容が見つかりましたら、メール:notice#wまでご連絡ください。3codebox.com(メールを送信する際、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害を疑われるコンテンツを削除します。)

おすすめ