Scrapy框架应用的两种方式
URL有两种写法,一种作为类的常量、一种作为start_requests(self)方法的常量.
无论哪一种写法,URL都是必须的.
如果URL是定义在start_request(self)这个方法里面,那我们就要使用: yield scrapy.Request 方法发送请求
1. URL作为类的常量
# -*- coding: utf-8 -*- import scrapy class muhe(scrapy.Spider): name = "mutian" start_urls = [ 'http://lab.scrapyd.cn/page/1/', 'http://lab.scrapyd.cn/page/2/', ] def parse(self, response): page = response.url.split("/")[-2] filename = 'mutian-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('保存文件: %s' % filename)
2. URL作为start_requests(self)方法的常量
# -*- coding: utf-8 -*- import scrapy class muhe(scrapy.Spider): name = "mutian" def start_requests(self): urls = [ #爬取的链接由此方法通过下面链接爬取页面 'http://lab.scrapyd.cn/page/1/', 'http://lab.scrapyd.cn/page/2/', ] for url in urls: #发送请求 yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = 'mingyan-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('保存文件: %s' % filename)
D:\work\pycode\tutorial>scrapy crawl mutian
如果碰到如下错误:
[scrapy.core.engine] DEBUG: Crawled (404) <GET http://lab.scrapyd.cn/robots.txt> (referer: None)
需要修改settings.py
ROBOTSTXT_OBEY = False

浙公网安备 33010602011771号