zoukankan      html  css  js  c++  java
  • python 爬虫(六) scrapy tutorial 1

    今天开始scrapy的学习,环境 ubuntu 16.04 python3.5

    1. 创建scrapy爬虫工程

         通过终端进入要放置爬虫的文件夹,在我的环境中 ~/PycharmProjects/ScrapyWord/tutorial

         使用命令:scrapy startproject tutorial

         会创建tutorial文件夹,在这个文件夹下面会包含相应的内容。

    2. 创建第一个spider类

        在spiders文件夹下面可以添加一个名称为quotes_spider.py的文件,内容如下(其中有注释不做过多说明)

    import scrapy
    
    class Quotespider(scrapy.Spider):
        name = 'quotes'
        # spider的标识,使用name属性来区分不同的spider,不同的spider不能够拥有相同的名字属性
        def start_requests(self):
            # start_requests方法必须返回可迭代的Request对象,这个spider将这些对象作为起始初始化请求对象
            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):
            # 在parse方法中每一个request请求发出之后会在这个方法中返回对应的response对象,
            # 这个response对象为textResponse对象,包含了界面的内容和其他一些处理的方法。
            # 在这个方法内部通常将数据分解为字典,还可以查找到新的url
            page = response.url.split("/")[-2]
    
            filename = 'quotes-%s.html' % page
            with open(filename, 'wb') as f:
                f.write(response.body)
            self.log('Saved file %s' % filename)
    

    3. 如何使spider运行起来

        在scrapy文档中使用  scrapy crawl quotes 命令来启动脚本,注意因该在脚本的top lelvel目录

        但是我使用的pycharm IDE,在spiders上一级目录创建main.py 

    from scrapy import cmdline
    
    cmdline.execute("scrapy crawl quotes".split())
    

    4. 在返回的response中查找元素

        在parse方法中会返回response类型的对象。

        使用response.css方法会返回一个selectlist的对象,这个对象类似于一个列表。如果要获取内容使用extract方法

    print(response.css('title').extract())
    

     如果要只获取text属性:

    response.css('title::text').extract_first()
    

     除了extract和extract_first两个方法之外还有re()方法。

  • 相关阅读:
    NYOJ 123士兵杀敌(四)(树状数组)(插线问点)
    NYOJ 634万里挑一(优先队列)
    NYOJ 119士兵杀敌(三)(RMQ问题)(ST表)
    NYOJ 116士兵杀敌(二)(树状数组)(插点问线)
    迁移anaconda导致原来jupyter notebook无法使用
    Anaconda安装
    pandas注意点
    群与双线性映射
    numpy.cov() 协方差计算方法
    Annoy模型
  • 原文地址:https://www.cnblogs.com/someoneHan/p/6293325.html
Copyright © 2011-2022 走看看