爬取干货集中营数据(2)

爬取干货集中营数据(2)

http://gank.io/

得到更多妹纸图 ಠ౪ಠ

  1. 还记得上一次抓住的妹子吗。爬取干货集中营数据(1)——抓住妹子
    延用上次的工程代码,我们继续抓妹子。

  2. 定义Item(ganl/items.py):

     class GankMeizi(scrapy.Item):
         title = scrapy.Field()
         image = scrapy.Field()
         refs = scrapy.Field()
    
    • title : 每页标题
    • image : 每页妹子
    • refs : 每页中的超链接,链向下一篇 或者 上一篇
  3. 继续修改gankMeiZi.py

    # -*- coding: utf-8 -*-
    __author__ = 'dongsj'

    import scrapy

    from scrapy.spider import Spider
    from scrapy.selector import Selector

    from gank.items import GankMeizi

    class GankMeiZiSpider(Spider):
        name = 'gankMeiZi'
        allowed_domains = ["gank.io"]
        start_urls = [
            "http://gank.io"
        ]

        def parse(self, response):
            """
                用来爬取http://gank.io 妹子图片
            """
            base_url = 'http://gank.io'
            sel = Selector(response)
            # 页面标题
            title = sel.xpath("//div[@class='typo']/div/h1/text()").extract()
            # 图片
            image = sel.xpath("//div[@class='outlink']/h1/img/@src").extract()
            # 前一页面地址
            refs = sel.xpath("//div[@class='typo']/div[@class='container content']/div[@class='row'][1]/div[@class='six columns']/p/a/@href").extract()

            # Item 对象
            meizi = GankMeizi()
            meizi['title'] = title[0]
            meizi['image'] = image[0]
            meizi['refs'] = refs

            yield meizi

            if 0 < len(refs):
                url = base_url + refs[0]
                yield scrapy.Request(url, callback=self.parse)
  • 这里还是使用 xpath 解析了页面上的超链接(指向上一篇 或者 下一篇文章)
  • 得到超链接后,根据网站特点拼接成新的链接,继续爬取一次妹子

当然这里还是有很多问题:

  • 会出现重复的妹子,我们需要加入判断的机制,使得妹子不会被重复的爬取
  • 爬取的内容只是打印在控制台,我们需要另外的存储方式
  • ... ...

你可能感兴趣的:(爬取干货集中营数据(2))