美文网首页
我们的第一个爬虫

我们的第一个爬虫

作者: 没有车胎的战车 | 来源:发表于2017-10-31 19:32 被阅读0次

Scrapy使用你定义的爬虫的类来从网站中爬取信息。你定义的爬虫的类必须是scrapy.Spider的子类,并且需要定义此子类的初始化请求、如何在页面中爬取所需的链接、如何解析爬取到的页面内容并且提取你需要的数据。
在你的tutorial/spider路径中创建一个名为quotes_spider.py文件,并保存在你的项目中,我们的第一个爬虫的代码如下:

    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 = 'quotes-%s.html' % page
            with open(filename, 'wb') as f:
                f.write(response.body)
            self.log('Save file %s' % filename)

正如你所见到的,我们的爬虫(Spider)是scrapy.Spider的子类(Spider继承父类),还定义了一些新的属性和方法。

  • name:识别爬虫(名字)。
    在一个项目中一个爬虫的名字必须是唯一的,你不能设置同样的爬虫名字在此项目中。
  • start_request():必须返回一个请求(Request)的迭代对象(你也可以返回请求的列表或编写一个生成器函数)爬虫将会从此请求开始爬取。
    后续的请求将会从这些初始化请求依次生成。
  • parse():将调用一个方法来处理每个请求所响应的下载。
    响应参数是TextResponse的一个实例,该实例不仅保存了页面的内容,而且有助于我们对实例作进一步的操作。
    parse()方法函数通常用来解析页面返回的响应,提取所爬取数据并生成字典类型数据,还可以寻找新的链接(URLs)和从链接中创建想的请求(Request)。

相关文章

网友评论

      本文标题:我们的第一个爬虫

      本文链接:https://www.haomeiwen.com/subject/hjgeuxtx.html