LoginSignup
2
2

More than 5 years have passed since last update.

Spider作成のテンプレート変更

Posted at

少しScrapyをいじっていますが、Spider作成時、start_urlsが「http://[パラメータ値]」に設定されます。
※Scrapyのバージョンは1.5.1

$ scrapy genspider aaa aaa.com
Created spider 'aaa' using template 'basic' in module:
  myproject.spiders.aaa
aaa.py
# -*- coding: utf-8 -*-
import scrapy


class AaaSpider(scrapy.Spider):
    name = 'aaa'
    allowed_domains = ['aaa.com']
    start_urls = ['http://aaa.com/']

    def parse(self, response):
        pass

最近は「https://」が一般的?みたいなので、作成時もそれであって欲しい。
ので、直したいと思います。
※まぁ、中をいじるわけだから、そん時に直したら?ではありますが…

対応対応

テンプレートファイル置き場
[各自設定したどっか]/anaconda/lib/python3.6/site-packages/scrapy/templates/spiders

普通にgenspiderした場合、「basic.tmpl」を使用しているようなので、その中身を変更。

spider下のファイル
8 -rw-rw-r--  2 hoge  staff  209 10 16 16:40 basic.tmpl
8 -rw-rw-r--  2 hoge  staff  654  7 12 06:14 crawl.tmpl
8 -rw-rw-r--  2 hoge  staff  571  7 12 06:14 csvfeed.tmpl
8 -rw-rw-r--  2 hoge  staff  562  7 12 06:14 xmlfeed.tmpl
basic.tmpl(こう直したよ)
import scrapy


class $classname(scrapy.Spider):
    name = '$name'
    allowed_domains = ['$domain']
    start_urls = ['https://$domain/']

    def parse(self, response):
        pass

※Python3で動かすので先頭行も削除してます。
反映されるか確認

$ scrapy genspider bbb bbb.com
Created spider 'bbb' using template 'basic' in module:
  myproject.spiders.bbb
bbb.com
import scrapy


class BbbSpider(scrapy.Spider):
    name = 'bbb'
    allowed_domains = ['bbb.com']
    start_urls = ['https://bbb.com/']

    def parse(self, response):
        pass

うまくいきました。
わーい

テンプレートを自作する場合

-tオプションで任意のテンプレートファイルを指定できるので、別途自作したテンプレートを使用もできるようです。

scrapy genspider aaa aaa.com -t [テンプレート名]
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2