scrapy

安装

  • pip install scrapy

创建

  • scrapy startproject projectName
    • scrapy.cfg 配置文件
    • projectName/
      • python                                   后续编写的代码
      • items.py                                项目的items文件
      • pipelines.py                           项目的pipelines文件
      • settings.py                             项目的设置文件
      • spiders/
        • spidersNameOne.py       放置spiders代码的目录
        • spidersNameTwo.py

定义item

  • 在items.py中
        class TestItem(scrapy.Item):
            # 定义你需要的字段
            name = scrapy.Field()
            description = scrapy.Field()

编写爬虫

  • 在spider目录下新建
  • name为spiderName
  • start_urls需要获取的url列表
  • parse()返回的reponse传入,进行数据存储处理,生成下一个url等
  • eg:
        def parse(self, reponse):
            #对返回的reponse进行操作,提取保存等
            #生成进一步需要的url
            name = ""
            description = ""

运行

  • scrapy crawl name

 Scrapy Selectors

  • response.xpath('路径')
  • /html/body/img <body>的所有<img>标签元素
  • /html/body/img/text() <img>元素里面的内容
  • //<img> 选择所有的<img>标签
  • //div[@class="content"]选择所有类名content的<div>
  • 四个常用方法(返回列表)
    •   xpath()传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 
    •   css()传入CSS表达式,返回该表达式所对应的所有节点的selector list列表
    •   extract()序列化该节点为unicode字符串并返回list(习惯放在最后序列化)
    •   re()根据传入的正则表达式对数据进行提取,返回unicode字符串list列表

 item对象

  • item对象是一个用来返回的自定义的python字典
  • 使用技巧
    • from spider.items import TestItem #导入
    • item = TestItem() #实例化
    • item[字段]赋值 #一般用for循环
    • yield item

 保存数据

  • scrapy crawl spiderName -o fileName.json

 工具命令

  • 全局
    • startproject
      • scrapy startproject projectName
      • 创建一个新项目
    • settings
      • scrapy settings [options]
      • 获取scrapy设定
    • runspider
      • scrapy runspider <spider_file.py>
      • 运行不在项目中的spider
    • shell
      • scrapy shell
      • 打开shell
    • fetch
      • scrapy fetch https://i.cnblogs.com
      • 获取页面
    • view
      • scrapy view https://i.cnblogs.com
      • 在浏览器打开查看获取到的页面
    • version
      • scrapy version [-v]
      • 查看版本
  •  局部项目内
    • crawl
      • scrapy crawl <spider> #程序里的name
      • 运行脚本
    • check
      • scrapy check [-l] <spider>
      • 运行contract检查
    • list
    • edit
      • scrapy edit <spider>
      • 编辑
    • parse
      • scrapy parse url [options]
      • 获取url并相应spider处理
    • genspider
      • scrapy genspider [-t template] spiderName i.cnblogs.com
      • 创建一个新脚本
    • deploy
      • scrapy deploy <target:project> -l <target> -L ]
      • 部署到服务器上
    • bench
  •  

 

 

 

 

 

 

 

 

 

 

未完待续~~

posted @ 2018-01-12 21:33  王利群  阅读(174)  评论(0)    收藏  举报