初心者のためのScrapyクローラー操作-始めるための非常に詳細なケース

この記事では、Scrapyクローラーのケースを0から記述し、結果をローカルのjson形式で保存します。これにより、いくつかのファイルの役割が紹介されます。初心者が一緒に学ぶのに適しています。完全で運用可能なコードは、記事の最後に記載されています

1.クロールされたWebサイト

クロールする予定の内容は次のとおりです。http
ここに画像の説明を挿入//www.itcast.cn/channel/teacher.shtml「チェック」またはF12を右クリックすると、Webサイト上のすべての教師の名前、役職、および情報を表示できます(ノートブックにはFnが必要です)。 + F12)ブラウザ内上記のデバッグページでは、Googleプラグインのxpathヘルパーがダウンロードすることをお勧めします。これは使いやすいです。

次に、クロールの詳細な手順

1.クローラープロジェクトを作成します

クローラープロジェクトを作成するコマンドは次のとおりです
。scrapystartprojectプロジェクト名
ここに画像の説明を挿入
この時点で、作成したプロジェクトフォルダーがデスクトップに表示されます。最初の作成内容は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここでは、各ファイルの役割について説明します。

プロファイルプロジェクト:scrapy.cfg
スパイダー/:このフォルダー
のinit .pyの下に爬虫類ファイルを書き込みました:通常は空のファイルですが、存在する必要があります。ディレクトリ__init__。pyはありません。彼が単なるディレクトリパッケージ
アイテムではないことを示します。:構造化フィールドを定義し、クロールされたデータを保存するプロジェクトのターゲットファイル
middlewares.py:プロジェクトのミドルウェア
pipelines.py:プロジェクトのパイプラインファイル
setting.py:プロジェクトの設定ファイル

2.クローラーファイルを作成します

作成したプロジェクト(cd ITcast)を
入力して、次のようにクローラーファイルコマンド作成します
。scrapygenspiderファイル名(ここにクローラーコードを記述します)
ここに画像の説明を挿入
このとき、新しく作成されたファイルitcast.pyがspiderフォルダーに表示されます。
ここに画像の説明を挿入

3.items.pyを書きます

このファイルは、クロールする特定のコンテンツを定義するために使用されます。これは、データベースのフィールドまたはJavaのPojoクラスに相当します。

import scrapy
class ItcastItem(scrapy.Item):
    # define the fields for your item here like:
    # 老师姓名
    name = scrapy.Field()
    # 老师职称
    title = scrapy.Field()
    # 老师信息
    info = scrapy.Field()

4.setting.pyを設定します

このファイルは構成ファイルです。ファイルの内容は次のように変更されます。
まず、学習目的であるため、robots.txtプロトコルに準拠する必要がないため、変更するROBOTSTXT_OBEYを見つけます。

ROBOTSTXT_OBEY = False

次に、ITEM_PIPELINESコメントを削除し、

ITEM_PIPELINES = {
    
    
    'Teacher.pipelines.TeacherPipeline': 300,
}

上記の2つの手順で、それぞれFalseに変更し、コメントを解除すると、構成が完了します。

5.itcast.pyを記述します

import scrapy
from ITcast.items import ItcastItem

class ItcastSpider(scrapy.Spider):
    # 爬虫名  启动爬虫时需要的参数  *必须
    name = 'itcast'
    # 爬取域范围  允许爬虫在这个域名下面进行爬取 可选
    allowed_domains = ['http://www.itcast.cn']
    # 起始url列表,爬虫执行后第一批请求,将从这个列表里获取
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml']
    
    # 解析响应文件 //div[@class='li_txt']是xpath语法 大家可以学一学
    def parse(self, response):
        node_list = response.xpath("//div[@class='li_txt']")
        items = [] # 用来存储所有的item字段
        for node in node_list:
            # 创建item字段对象,用来存储信息
            item = ItcastItem()
            name = node.xpath("./h3/text()").extract()
            title = node.xpath("./h4/text()").extract()
            info = node.xpath("./p/text()").extract()
            # 注意 这里返回的不是文本而是一个xpath对象
            # 需要用.extrac()将xpath对象转化为 Unicode字符串
            
            item['name'] = name[0]
            item['title'] = title[0]
            item['info'] = info[0]
            items.append(item)
        
        return items # 返回给engine引擎

6.クロールを開始し、json形式で保存します

次に、必要な情報をクロールを開始cmdのコマンドは次のように。
scrapyクロールプロジェクト名-oプロジェクトname.jsonを
ここに私のコマンドは次のとおりです。scrapyクロールitcast -o itcast.json
ここにもCSV形式で保存することができます。scrapyクロールプロジェクトname- o Project name.csv
ここに画像の説明を挿入ここでは、クロールされた情報がjson形式であり、itcast.jsonのローカルファイルがスパイダーフォルダーの下に表示されていることがわかります。
ここに画像の説明を挿入
ここでitcast.jsonファイルを開くと、形式がUnicodeエンコーディングであることがわかり
ここに画像の説明を挿入
ます。表示するにはjsonコンバーターが必要です。jsonオンライン解析https://www.json.cn/をクリックし、コピーして解析します。
ここに画像の説明を挿入
これまでのところ、スクレイプクロール全体作業が完了しました!

最終的なソースコードの詳細については、
https//github.com/zmk-c/scrapy/tree/master/scrapy_itcastをご覧ください。
メリットの波、scrapyの使用を開始する方法を学ぶビデオ:https://www.bilibili .com / video / BV1jx411b7E3

おすすめ

転載: blog.csdn.net/qq_40169189/article/details/107580965