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()方法。

  • 相关阅读:
    临时文件服务器,配置共享文件夹
    封装扩展方法
    List.Insert
    VS 生成事件中xcopy失败
    创建型设计模式总结
    js提交图片转换为base64
    C#建造者模式
    echarts 立体柱
    k8s生产环境启用防火墙,要开启的端口
    一篇文章为你图解Kubernetes网络通信原理
  • 原文地址:https://www.cnblogs.com/someoneHan/p/6293325.html
Copyright © 2011-2022 走看看