美文网首页python
爬虫进阶:Scrapy 入门

爬虫进阶:Scrapy 入门

作者: happyJared | 来源:发表于2018-09-01 21:42 被阅读136次

    进阶前言

      学Py和写爬虫都有很长一段时间了,虽然工作方面主要还是做Java开发,但事实上用python写东西真的很爽。之前都是用Requests+BeautifulSoup这样的第三方库爬一些简单的网站,好处简单上手快,坏处也明显,单线程速度慢,偶尔想要跑快点还得自己写多线程或者多进程。其实早已久仰Scrpay大名,无奈一直没有主动去接触,前不久买了一本相关的书籍,看完之后便陆陆续续试手了几个实战项目(后续介绍),现在应该算是半梦半醒迈入半个大门了。其实Java也有好几个不错的爬虫框架,那为什么不选择Java?呵呵,人生苦短,用Python没错,何况它现在这么火。

      大多数学习是没有捷径的,如果你也想学Scrapy,根据个人经验,可以先买一两本相关书籍翻翻,然后写写小项目,接着再继续往深入学习,网上有很多不错的关于Scrapy的电子书,文末会推荐一波自己瞎逛已收藏的,可以根据自己的实际情况进行帅选和甄别。

    目录结构

      万事开头难,安装好Scrapy环境后输入命令scrapy startproject start,这样就创建好了第一个scrapy项目,目录结构如下:

    - start
        - start 
            - spiders # 爬虫编写及存放的目录
                - __init__.py
            - __init__.py
            - items.py # 定义爬虫数据结构的类
            - middlewares.py # 定义一些中间件的类,包括代理、请求头这些
            - pipelines.py # 数据流出的管道类,将爬取数据保存入库等
            - settings.py # 配置相关类,包括像日志、middlewares和pipelines等
        - scrapy.cfg # 主要用于将爬虫部署到第三方,一般可不理会
    

      项目框架已经搭起来了,紧接着示例下如何第一个爬虫,可以自己在spiders目录下手动创建爬虫类,也可以用scrapy提供的快捷命令scrapy genspider {spider-name} {target-website}快速生成指定名称的目标站点爬虫(参考如下)。例如spider-name可以定义为example,target-website指定为example.com

    # -*- coding: utf-8 -*-
    import scrapy
    
    
    class ExampleSpider(scrapy.Spider):
        name = 'example'  # 爬虫名称,运行的时候需指定
        allowed_domains = ['example.com']  # 允许爬取的域名
        start_urls = ['http://example.com/']  # 第一个爬取的目标网址
    
        def parse(self, response):
            """scrapy爬取完首个目标网页后会回调到这个方法"""
    
            pass
    

      更多优秀和详细的Scrapy入门知识应该从书中或者其它学习资源获取,最后再附上Scrapy学习必备的经典架构图:

    Scrapy经典架构图

    常见命令

      这里记录和列举一些常用的scrapy命令及其作用:

    命令 作用 可选参数
    scrapy startproject {project-name} 创建scrapy项目
    scrapy genspider {spider-name} {target-domain} 创建目标站点指定名称爬虫
    scrapy shell {url} 调试抓取的指定网页 -s USER_AGENT='xxx',加上指定请求头
    scrapy crawl {spider-name} 运行指定爬虫 -o output.{json or xml or cvs},将抓取结果输出为指定格式文件保存; -s {CLOSESPIDER_PAGECOUNT or CLOSESPIDER_ITEMCOUNT}=n,抓取指定数量网页或ITEM后自动停止爬虫
    scrapy check {spider-name} 检测爬虫是否存在错误

    学习资源

    参考链接

    scrapy命令行工具
    Scrapy Documentation
    Scrapy 中文文档
    示例代码 - GitHub

    相关文章

      网友评论

        本文标题:爬虫进阶:Scrapy 入门

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