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

 

posted @ 2019-01-24 19:49  牧 天  阅读(422)  评论(0)    收藏  举报