ホームページ  >  記事  >  バックエンド開発  >  Scrapy クローラーが Qianku.com の美しい画像データ取得と人気共有ランキングを実現

Scrapy クローラーが Qianku.com の美しい画像データ取得と人気共有ランキングを実現

王林
王林オリジナル
2023-06-22 13:41:451155ブラウズ

ScrapyクローラーはQianku.comの美しい写真データの取得と人気共有ランキングを実現します

インターネットの普及に伴い、人々の画像に対する需要は徐々に高まり、美しい写真のウェブサイトも登場しました。 Qianku.com は、高解像度の写真と素材リソースを提供することに特化したプラットフォームで、ユーザーが無料でダウンロードでき、商用アートリソースの代替としても使用できる優れた写真素材が多数あります。ただし、これらの美しい画像を手動でダウンロードするのは時間がかかり、非効率的です。そこでこの記事では、Scrapy クローラーを使って美しい写真データを取得し、Qianku.com で人気の株をランキングする方法を紹介します。

1. Scrapy のインストール

Scrapy をインストールする前に、事前に Python 環境をインストールする必要があります。 Python 環境では、Scrapy は pip installscrapy コマンドを通じてインストールできます。

2. Scrapy プロジェクトを作成する

コマンド ライン ターミナルを開き、プロジェクトを作成するディレクトリを入力し、コマンド Scrapy startproject qkspider を入力して、「qkspider」という名前のプロジェクトを作成します。 Scrapy プロジェクトのディレクトリ内。

3. クローラーの作成

プロジェクト ディレクトリに移動し、scrapy genspider qk qkpic.com コマンドを入力して、spiders フォルダーの下に「qk」という名前のクローラーを作成します。

4. コードを記述します

1. settings.py ファイルを変更します

まず、qkspider ディレクトリにある settings.py ファイルを開き、次のコードを追加します。

ITEM_PIPELINES = {'qkspider.pipelines.QkspiderPipeline':100,}

取得した美しい画像データをデータベースに保存するためです。

2. Pipelines.py ファイルを変更する

次に、qkspider ディレクトリにある Pipelines.py ファイルを開いて、次のコードを追加する必要があります:

import pymongo

class QkspiderPipeline(object):
    def __init__(self):
        client = pymongo.MongoClient("mongodb://localhost:27017/")
        db = client['qkdb']
        self.collection = db['qkpic']

    def process_item(self, item, spider):
        self.collection.insert(dict(item))
        return item

取得した美しい画像データはMongoDBに保存されます。

3. items.py ファイルを変更します

qkspider ディレクトリにある items.py ファイルを開き、その中に次のコードを追加します:

import scrapy

class QkspiderItem(scrapy.Item):
    title = scrapy.Field()
    img_url = scrapy.Field()
    share_num = scrapy.Field()

これは、取得するデータの種類。

4. qk.py ファイルを変更する

Spiders フォルダーの下にある qk.py ファイルを開き、次のコードをその中に追加します:

import scrapy
from qkspider.items import QkspiderItem

class QkSpider(scrapy.Spider):
    name = "qk"
    allowed_domains = ["qkpic.com"]
    start_urls = ["http://www.qkpic.com/"]

    def parse(self, response):
        items = []
        pic_lists = response.xpath('//div[@class="index_mianpic"]/ul/li')
        for i, pic in enumerate(pic_lists):
            item = QkspiderItem()
            item['title'] = pic.xpath('./a/@title').extract_first()
            item['img_url'] = pic.xpath('./a/img/@src').extract_first()
            item['share_num'] = int(pic.xpath('./span/em/text()').extract_first())
            items.append(item)
        return items

これは何を定義するかです。ルールの種類 Qianku Webサイトの美しい画像データをクロールし、MongoDBに保存します。このコードでは、美画像のタイトル、URLアドレス、シェア量など、取得したい美画像情報を指定します。

5. クローラーの実行

これで、コマンド ライン ターミナルで作成したばかりのクローラー プログラムを実行できるようになります。 qkspider ディレクトリにコマンド Scrapy roll qk を入力して、qk.py ファイル内のプログラムを実行し、Qianku Web サイトの美しい画像データのクロールを開始し、MongoDB に保存します。

6.人気共有ランキングの達成

Qianku Webサイトの人気共有ランキングを取得するには、人気リストページのURLを取得し、以下のコードをqkに追加する必要があります。 py file:

class QkSpider(scrapy.Spider):
    name = "qk"
    allowed_domains = ["qkpic.com"]
    start_urls = ["http://www.qkpic.com/", "http://www.qkpic.com/top/"]

    def parse(self, response):
        if response.url.startswith('http://www.qkpic.com/top/'):
            items = self.parse_rank_list(response)
        else:
            items = self.parse_pic_info(response)
        return items

    # 爬取热门榜单信息
    def parse_rank_list(self, response):
        items = []
        pic_lists = response.xpath('//div[@class="topcont"]/ul/li')
        for i, pic in enumerate(pic_lists):
            item = QkspiderItem()
            item['title'] = pic.xpath('./a/@title').extract_first()
            item['img_url'] = pic.xpath('./a/img/@src').extract_first()
            item['share_num'] = int(pic.xpath('./div[1]/i[2]/text()').extract_first())
            items.append(item)
        return items

このコードでは、Web サイトのホームページと人気リストのページに start_urls を割り当て、新しい関数 parse_rank_list を追加します。

7. 概要

この記事では、Scrapy クローラー フレームワークを使用して、Qianku Web サイトの美しい画像データをクロールする方法を紹介します。クローラーのプロセス中に、取得する必要があるデータ型を定義し、MongoDB を使用して取得したデータを保存します。さらに、この記事では、クローラー プログラムの機能を拡張するために、Qianku Web サイトの人気共有ランキング リストを取得する方法も紹介します。

以上がScrapy クローラーが Qianku.com の美しい画像データ取得と人気共有ランキングを実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。