一步一步学Scrapy:step 1

作者: 迷途老鹰 | 来源:发表于2016-07-31 22:11 被阅读205次

    Ubuntu下安装Scrapy

    1、首先需要安装如下软件
    Python 2.7
    lxml
    OpenSSL
    pip or easy_install

    2、安装必备软件
    sudo apt-get install libevent-dev
    sudo apt-get install python-dev
    sudo apt-get install libxml2-dev
    sudo apt-get install libxslt1-dev
    sudo apt-get install python-setuptools

    3、安装Scrapy
    sudo apt-get install Scrapy

    创建项目

    以爬取mininova中的EBOOK种子链接、名称、大小为例
    1、进入存储代码的目录中,运行下列命令
    scrapy startproject mininova
    该命令将会创建包含下列内容的mininova目录

    mininova/
        scrapy.cfg
        mininova/
            __init__.py
            items.py
            pipelines.py
            settings.py
            spiders/
                __init__.py
                ...
    

    这些文件分别是:

    • scrapy.cfg:项目的配置文件
    • mininova/:该项目的python模块。
    • mininova/items.py:项目中的item文件
    • mininova/pipelines.py:项目中pipelines文件
    • mininova/settings.py:项目的设置文件
    • mininova/spiders/:放置spider代码的目录

    2、定义Item
    编辑mininova目录中的items.py文件:

    import scrapy
    
    class MininovaItem(scrapy.Item):
        title = scrapy.Field()
        link = scrapy.Field()
        size = scrapy.Field()
    

    3、编写第一个爬虫(Spider)
    为了创建一个Spider,必须继承scrapy.Spider类,且定义一下三个属性:

    • name:用于区别Spider。该名字必须是唯一的,不可以为不同的Spider设定相同的名字。
    • start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL则从初始的URL获取到的数据中提取。
    • parse():是spider的一个方法。被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。

    以下为我们的第一个Spider代码,保存在mininova/spiders目录下的mininova_spider.py文件中:

    import scrapy
    from mininova.items import MininovaItem
    
    class MininovaSpider(scrapy.Spider):
        name = 'mininova'
        allowed_domains = ['mininova.org'] 
        start_urls = ['http://www.mininova.org/sub/50/name/1']
    
        def parse(self,response):
            sites = response.xpath('//table[@class="maintable"]//tr')
            for site in sites:
                item = MininovaItem()
                item['title'] = site.xpath('td/a[not(@class="ti com")]/text()').extract()
                for url in site.xpath('td/a[@class="dl"]/@href').extract():
                    item['link'] = 'http://www.mininova.org' + url
                for size in site.xpath('td[3]/text()').extract():
                    size = size.encode('utf-8')
                    item['size'] = size.replace('\xc2\xa0','')
                yield item
    

    4、爬取
    进入项目的根目录,执行下列命令启动spider:
    scrapy crawl mininova
    5、保存爬取到的数据
    scrapy crawl mininova -o items.json

    下一步

    下一篇将介绍分页爬取、存入数据库及一些设置。

    相关文章

      网友评论

        本文标题:一步一步学Scrapy:step 1

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