codecamp

scrapy 2.3 创建蜘蛛

蜘蛛是你定义的类,Scrapy用来从一个网站(或一组网站)获取信息。它们必须是子类 ​Spider​ 定义要发出的初始请求,可以选择如何跟踪页面中的链接,以及如何解析下载的页面内容以提取数据。

这是我们第一只蜘蛛的代码。将其保存在名为的文件中 ​quotes_spider.py​ 下 ​tutorial/spiders​ 项目中的目录:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = f'quotes-{page}.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log(f'Saved file {filename}')

如你所见,我们的蜘蛛子类 ​scrapy.Spider​ 并定义了一些属性和方法:

  • name​ :标识蜘蛛。它在一个项目中必须是唯一的,也就是说,不能为不同的蜘蛛设置相同的名称。
  • start_requests()​ :必须返回一个ITable of requests(您可以返回一个请求列表或编写一个生成器函数),蜘蛛将从中开始爬行。随后的请求将从这些初始请求中依次生成。
  • parse()​ :将调用的方法,用于处理为每个请求下载的响应。响应参数是的实例 ​TextResponse​ 它保存页面内容,并有进一步有用的方法来处理它。这个 ​parse()​ 方法通常解析响应,将抓取的数据提取为dict,并查找新的URL以跟踪和创建新的请求。( ​Request​0 从他们那里。


scrapy 2.3 创建项目
scrapy 2.3 如何运行我们的蜘蛛
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }