少し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 [テンプレート名]