ホームページ  >  記事  >  バックエンド開発  >  Douban ムービー画像のクローリング例

Douban ムービー画像のクローリング例

PHP中文网
PHP中文网オリジナル
2017-06-20 15:26:401953ブラウズ

まず、最初にエフェクトを適用します

次に、Scrapyをインストールして使用します

公式サイト:。

インストールコマンド: pip install Scrapy

インストールが完了しました。デフォルトのテンプレートを使用して新しいプロジェクトを作成します。コマンド: scrapy startproject xx

上の写真は、スクレイピーの動作メカニズムを鮮やかに示しています。各部の具体的な意味や機能はBaiduで見ることができるので、ここでは詳しく説明しません。一般に、行う必要があるのは次の手順です。

1) 他の構成については、独自の要件に応じてドキュメントの構成を表示できます。

DEFAULT_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.10 Safari/537.36'}
DOWNLOAD_TIMEOUT = 30IMAGES_STORE = 'Images'

2) Modelクラスに相当するitemsクラスを定義します。例:

class CnblogImageItem(scrapy.Item):
    image = scrapy.Field()
    imagePath = scrapy.Field()
    name = scrapy.Field()

3) ダウンロードミドルウェアの設定 ダウンロードミドルウェアの機能は、リクエストの送信方法をカスタマイズすることです。一般的には、処理エージェント用のミドルウェア、PhantomJ 用のミドルウェアなどがあります。ここでは、プロキシ ミドルウェアのみを使用します。

class GaoxiaoSpiderMiddleware(object):def process_request(self, request, spider):if len(request.flags) > 0 and request.flags[0] == 'img':return None
        driver = webdriver.PhantomJS()# 设置全屏        driver.maximize_window()
        driver.get(request.url)
        content = driver.page_source
        driver.quit()return HtmlResponse(request.url, encoding='utf-8', body=content)class ProxyMiddleWare(object):def process_request(self, request, spider):
        request.meta['proxy'] = 'http://175.155.24.103:808'

4) Spiderから渡された項目の処理、Excel、データベースの保存、画像のダウンロードなどに使用するパイプラインを書きます。これは、公式の画像ダウンロード フレームワークを使用して画像をダウンロードするためのコードです。

class CnblogImagesPipeline(ImagesPipeline):
    IMAGES_STORE = get_project_settings().get("IMAGES_STORE")def get_media_requests(self, item, info):
        image_url = item['image']if image_url != '':yield scrapy.Request(str(image_url), flags=['img'])def item_completed(self, result, item, info):
        image_path = [x["path"] for ok, x in result if ok]if image_path:# 重命名if item['name'] != None and item['name'] != '':
                ext = os.path.splitext(image_path[0])[1]
                os.rename(self.IMAGES_STORE + '/' +  image_path[0], self.IMAGES_STORE + '/' + item['name'] + ext)
            item["imagePath"] = image_pathelse:
            item['imagePath'] = ''return item

5) 独自の Spider クラスを作成します。 Spider の役割は、いくつかの情報を設定し、URL リクエストを開始し、応答データを処理することです。ここでのダウンロード ミドルウェアの構成とパイプラインは、設定ファイルに配置できます。ここでは、それらを独自のスパイダーに配置します。プロジェクトには複数のスパイダーが含まれており、それらは異なるダウンロード ミドルウェアを使用するため、個別に構成されています。

りー

以上がDouban ムービー画像のクローリング例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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