我正在使用scrapy来爬行我拥有的旧站点,我将下面的代码用作我的spider。我不介意为每个网页或其中包含所有内容的数据库输出文件。但是我确实需要能够使Spider抓取整个内容,而不必输入我当前必须执行的每个网址
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)
要抓取整个网站,你应该使用CrawlSpider而不是scrapy.Spider
这是一个例子
为了你的目的,请尝试使用如下所示的内容:
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)