公式サイト:。
インストールコマンド: 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 サイトの他の関連記事を参照してください。