scrapy-redisの使用とデバッグ
1794 ワード
#1なぜscrapyを使うのか:
自分でpython requestライブラリで書いた爬虫類はjsで生成されたhtmlファイルを取得できないため、htmlファイルは不完全です.
#2 scrapy-redisとは
scrapy-redisはscrapyのようなプラグインで、scrapyは自動的にredisからキャプチャするリンクを取得してWebページに登ります.簡単で使いやすく、爬虫類の分布式フレームワークをすぐに構築することができます.
#3インストール
#4プロジェクトの作成
#5 scrapy-redisの構成と使用
ソースアドレスを表示https://github.com/rmax/scrapy-redis
#6 scrapyを自分のプロジェクトに組み込む
/yourProjectRoot/MyScrapy/spiders/XXXSpider.py MyScrapyはscrapyエンジニアリングフォルダです
あなたのプロジェクトでXXXXSpiderを実行します.run()はspiderのデバッグを実行できます
自分でpython requestライブラリで書いた爬虫類はjsで生成されたhtmlファイルを取得できないため、htmlファイルは不完全です.
#2 scrapy-redisとは
scrapy-redisはscrapyのようなプラグインで、scrapyは自動的にredisからキャプチャするリンクを取得してWebページに登ります.簡単で使いやすく、爬虫類の分布式フレームワークをすぐに構築することができます.
#3インストール
# scrapy
$pip install scrapy
# scrapy reids
$pip install scrapy-redis
#4プロジェクトの作成
$scrapy startproject (path) (name)
#5 scrapy-redisの構成と使用
ソースアドレスを表示https://github.com/rmax/scrapy-redis
#6 scrapyを自分のプロジェクトに組み込む
/yourProjectRoot/MyScrapy/spiders/XXXSpider.py MyScrapyはscrapyエンジニアリングフォルダです
from scrapy_redis.spiders import RedisSpider
from pathlib import Path
class XXXSpider(RedisSpider):
_headers = {
}
#
name = 'xxxSpider'
# list key
redis_key = "spider-queue:xxxSpider"
def __init__(self, *args, **kwargs):
# Dynamically define the allowed domains list.
# domain = kwargs.pop('domain', '')
# self.allowed_domains = filter(None, domain.split(','))
super(XXXSpider, self).__init__(*args, **kwargs)
def make_requests_from_url(self, url):
"""
request
:param url:
:return:
"""
headers = self._headers
request = super(XXXSpider, self).make_requests_from_url(url)
request.headers = headers
return request
def parse(self, response):
# do what ever you want
pass
@classmethod
def run(cls):
import scrapy.cmdline as sm
# scrapy
sm.execute(["scrapy", "crawl", "xxxSpider"])
あなたのプロジェクトでXXXXSpiderを実行します.run()はspiderのデバッグを実行できます