すべてのソースコード分析記事インデックスディレクトリポータル
[Scrapy Framework]バージョン2.4.0ソースコード:すべての構成ディレクトリインデックス
記事のディレクトリ
前書き
スパイダーフォルダの下には、実行される各pyクローラーファイルがあります。このフォルダ内のpyスクリプトは、データキャプチャのビジネスコンテンツを実現するためにコマンドライン実行によって実行されます。
スパイダーパラメーターの説明
スパイダーコンテンツを作成するコマンド
scrapy genspider xxxxx xxxxxx.com
- 名前
クローラーファイルによって生成されるインスタンス化されたオブジェクトの名前は、コマンドラインから生成されます。スクリプトを実行すると、この名前で実行されるため、変更する必要はありません。クローラープロジェクト内で一意である必要があります。
name = xxxxx # 这里对应的是命令行的第三部分
- allowed_domains
ドメインのクロールを許可しました。オプションです。ドメイン名が設定されている場合、非ドメイン名のURLは処理できません。
allowed_domains = []
allowed_domains = ["https://xxxxxx.com",] # 这里对应的是命令行的最后一部分
- start_urls
によって処理されるURLのリストは、スパイダー基本クラスのstart_requestsメソッドを介してトラバースされます。
後日、クローラー管理のコンテンツ部分で、この部分を管理の観点から書き換える内容を紹介します。
start_urls = [
'http://aaaa/',
'http://bbbb/',
'http://cccc/',
]
- Custom_settings
専用スパイダー構成。この設定をオーバーライドすると、プロジェクトのグローバル設定がオーバーライドされるため、クラス変数として定義する必要があります。管理しやすいように設定することをお勧めします。ここでは変更しないでください。 - クローラー
スパイダークラスのクローラーオブジェクトは、ミドルウェア、パイプラインなどの設定など、設定構成情報の設定を取得するために使用されます。
デフォルトでは変更は必要ありません。 - 設定
設定例、統合メッセージング設定構成の読み取り。
デフォルトでは変更は必要ありません。 - ロガーは
、データキャプチャプロセス中にプロジェクトログを送信するために使用されます。
デフォルトでは変更は必要ありません。 - from_crawlerScrapy
がスパイダークラスを作成するために使用するメソッド。
デフォルトでは変更は必要ありません。
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = cls(*args, **kwargs)
spider._set_crawler(crawler)
return spider
# 创建一个实例的对象
def __init__(self):
#实例化一个浏览器对象(实例化一次)
self.bro = webdriver.Firefox(executable_path=chrm,options =options )
- start_requests()
は最初のリクエストを生成します。デフォルトでは、start_urlsリストのURLがリクエストの作成に使用され、リクエストはgetリクエストです。
postメソッドまたはパラメーターの受け渡しを使用する必要がある場合は、start_requestsメソッドを書き直す必要があります。 - parse
Scrapyで使用されるデフォルトのコールバックは、データの処理に使用されます。さまざまな名前のparseメソッドは、データキャプチャ用にカスタマイズできます。
def start_requests(self):
parse_list = [
self.parse1,
self.parse2,
]
# 非API接口方法
for list_num in range(len(self.start_urls)):
for url_num in range(len(self.start_urls[list_num])):
yield scrapy.Request(url=self.start_urls[list_num][url_num],
meta={
'channel_name': self.channel_name_list[list_num][url_num],
'type_id': self.type_id_list[list_num][url_num]},
callback=parse_list[list_num])
def parse1(self, response):
......
def parse2(self, response):
......
- クローズド
クローラーの方法。
#必须在整个爬虫结束后,关闭浏览器
def closed(self,spider):
print('爬虫结束')
self.bro.quit()