私はscrapyを使用して、所有している古いサイトをクロールしています。以下のコードをスパイダーとして使用しています。 Webページごとにファイルを出力したり、その中にすべてのコンテンツを含むデータベースを出力したりしてもかまいません。しかし、現在実行しているすべてのURLを入力しなくても、スパイダーにすべてをクロールさせることができる必要があります。
import scrapy
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["www.example.com"]
start_urls = [
"http://www.example.com/contactus"
]
def parse(self, response):
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
サイト全体をクロールするには、scrapy.Spider
の代わりに CrawlSpider を使用する必要があります
あなたの目的のためにこのようなものを使ってみてください:
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
rules = (
Rule(LinkExtractor(), callback='parse_item', follow=True),
)
def parse_item(self, response):
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
また、これを見てください 記事