欢迎光临!
若无相欠,怎会相见

自己动手写项目:煎蛋爬虫

为何选择煎蛋

一直看人家写爬虫,现在自己开写一个试试。但是,我现在刚起步,只能选择容易爬取的网站。那为何选择煎蛋呢?因为煎蛋有福利,而且反爬技术不高,嘿嘿嘿。

爬虫环境

系统:Windows 10

Python版本:Python 3.5

爬虫框架:Scrapy

编写步骤

  1. 使用virtualenv,创建虚拟环境,具体步骤我就不写了,详见之前的文章
  2. 进入虚拟环境后,使用 scrapy startproject ImageSpider 创建项目。进入项目目录后,再使用 scrapy genspider jiandan jiandan.net/ooxx 创建煎蛋的爬虫模板,如下。
    # -*- coding: utf-8 -*-
    import scrapy
    
    
    class JiandanSpider(scrapy.Spider):
        name = 'jiandan'
        allowed_domains = ["jandan.net/ooxx/"]
        start_urls = ['http://jandan.net/ooxx/']
    
        def parse(self, response):
            pass
  3. 通过使用 scrapy shell http://jiandan.net/ooxx/ 进行调试,最终,我得到,获取页面上所有的图片链接的代码为: response.css("#comments > ol p > a::attr(href)").extract() ,其结果是数组,获取下一页链接的代码为: response.css('#comments a[title="Older Comments"]::attr(href)').extract_first("None") 其结果为字符串。
  4. 既然需要获取的链接已经全部得到,那么,我们开始编写逻辑。(由于本人在图片下载方面有所欠缺,因此,我只是把链接爬取到了,图片下载的逻辑没有弄好,后续更新)
    # -*- coding: utf-8 -*-
    import scrapy
    # import codecs
    # from ImageSpider.items import item
    
    
    class JiandanSpider(scrapy.Spider):
        name = 'jiandan'
        allowed_domains = ["jandan.net/ooxx/"]
        start_urls = ['http://jandan.net/ooxx/']
        next_page = None
    
        def parse(self, response):
            header = {
                'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                'Accept-Language': 'en',
                'Referer': 'http://jandan.net/ooxx'
            }
    
            # Image_Item = item()
            # 页面上的图片的链接
            image_urls = response.css("#comments > ol p > a::attr(href)").extract()
            length = len(image_urls)  # 数组长度
    
            for i in range(0, length):
                image_url = "http:" + image_urls[i]
                print(image_url)
                # 文件I/O不是很会,先放这里
                # self.file = codecs.open("photo_link.txt", 'w', encoding="utf-8")
                # self.file.write(image_url)
                # self.file.close()
            # 下一页链接
            self.next_page = response.css('#comments  a[title="Older Comments"]::attr(href)').extract_first("None")
            if self.next_page != None:
                header['Referer'] = self.next_page
            print(self.next_page)
            if self.next_page:
                # 将下一页链接交给yield下载,并回调parse
                yield scrapy.Request(self.next_page, headers=header, callback=self.parse)

    使用 scrapy crawl jiandan 就可以开始运行了,但是由于煎蛋也有反爬技术,防止IP被封,我就没有爬取太多链接,我爬取的一部分链接如下:

    http://wx1.sinaimg.cn/large/006K6QO5gy1fitq1us44tj30zk0qodm6.jpg
    http://wx4.sinaimg.cn/large/661eb95cgy1fitinl54hlj20yg0xi42t.jpg
    http://wx4.sinaimg.cn/large/661eb95cgy1fitinjwel5j20zk0zkx2f.jpg
    http://ws3.sinaimg.cn/large/0067Dm70ly1fithtk7cfvg306t04j1kx.gif
    http://wx3.sinaimg.cn/large/0067Dm70ly1fithpjdlnqj30gk0ovdjv.jpg
    http://wx3.sinaimg.cn/large/0067Dm70ly1fithop83o1j30m80tmq55.jpg
    http://ws2.sinaimg.cn/large/a2980b19gy1fitexdbpryj20zk1hcq7m.jpg
    http://wx1.sinaimg.cn/large/006Txc22gy1fitbzv95yaj30k00u0jvh.jpg
    http://wx1.sinaimg.cn/large/006V4y8Ogy1fihb8px6c3j30ci0hcdgx.jpg
    http://wx3.sinaimg.cn/large/e29b5221gy1fiaerts7z6j20qo0xz460.jpg
    http://wx1.sinaimg.cn/large/e29b5221gy1ficqe9ctknj20j60pkdhy.jpg
    http://wx4.sinaimg.cn/large/96c1121bgy1fit1f7ihiuj22601g04qq.jpg
    http://wx1.sinaimg.cn/large/96c1121bgy1fisz9ycsp8j20iy0sg0zi.jpg
    http://wx2.sinaimg.cn/large/006EmN5xly1fisylssk8fj31kw2asqb7.jpg
    http://ws3.sinaimg.cn/large/6c0cd6aagy1fiswwjmu0bj20qo0xctoc.jpg
    http://ws2.sinaimg.cn/large/5950978dly1fisubdexjsj20kv0rsb29.jpg
    http://wx4.sinaimg.cn/large/bd00df6fgy1fisjbew1t7g20dr07qnpd.gif
    http://wx2.sinaimg.cn/large/661eb95cgy1firkow1hb1j21hc0u0npd.jpg
    http://wx3.sinaimg.cn/large/661eb95cly1firitajkkgj20dw0ku0tz.jpg
    http://wx1.sinaimg.cn/large/661eb95cly1firit9wnzdj20bu0hsq3f.jpg
    http://wx1.sinaimg.cn/large/661eb95cly1firit8vaswj20b40dct9i.jpg
    http://wx1.sinaimg.cn/large/9ec19de8ly1firrbtgt5vj20np0zkgpg.jpg
    http://wx4.sinaimg.cn/large/9ec19de8ly1firrbe7pbdj20nm0zkafu.jpg
    http://wx2.sinaimg.cn/large/9ec19de8ly1firrbdge5ij20np0zk0x1.jpg
    http://jandan.net/ooxx/page-275#comments
    http://wx4.sinaimg.cn/large/9ec19de8ly1firta8vawij20vj18gtd3.jpg
    http://wx3.sinaimg.cn/large/9ec19de8ly1firta7xbtvj20vj18g0yk.jpg
    http://wx3.sinaimg.cn/large/3d8ab23cgy1fisndswa5qj20c80eut9d.jpg
    http://wx3.sinaimg.cn/large/e29b5221gy1fi68dgx3ojj20fo0ex75s.jpg
    http://wx1.sinaimg.cn/large/e29b5221gy1fimzpac1lrj20k00p7406.jpg
    http://ws3.sinaimg.cn/large/7d2e855dly1fisp5j2m7qj20de0kuq7e.jpg
    http://wx3.sinaimg.cn/large/973dd02bgy1fismmnmp8ej20b409otez.jpg
    http://wx4.sinaimg.cn/large/973dd02bgy1fismmc1d9cj20lo0eiwr9.jpg
    http://ws1.sinaimg.cn/large/973dd02bgy1fismm24dztj20ks0epaqe.jpg
    http://wx4.sinaimg.cn/large/973dd02bgy1fismlkledjg20dw07ynol.gif
    http://ws1.sinaimg.cn/large/973dd02bgy1fisml8z6xgj20m90xcdhk.jpg
    http://wx4.sinaimg.cn/large/bd00df6fgy1fismgtot0hj20go0m8tad.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism6rumvlj20u011iu0x.jpg
    http://wx3.sinaimg.cn/large/9f0e9ec6gy1fism62gv29j20u011i77m.jpg
    http://wx4.sinaimg.cn/large/9f0e9ec6gy1fism65o7yuj20u0102gpd.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism5s81uyj20hs0hsdhd.jpg
    http://wx2.sinaimg.cn/large/9f0e9ec6gy1fism5mf8x7j20u00u0dlb.jpg
    http://wx3.sinaimg.cn/large/9f0e9ec6gy1fism5j6ms5j20u011i77x.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism5g2bybj20u011iaem.jpg
    http://wx4.sinaimg.cn/large/9f0e9ec6gy1fism5cttb7j20qo0qojty.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism1y38jkj20u00u0tvt.jpg
    http://wx3.sinaimg.cn/large/9f0e9ec6gy1fism1tzqy2j20u011i76r.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism1o19u5j20u011ijvn.jpg
    http://wx2.sinaimg.cn/large/9f0e9ec6gy1fism1jg1r9j20nm0nmwgs.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fism1bnciij20u011igno.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fislz4yfzzj20kg0pk40c.jpg
    http://jandan.net/ooxx/page-274#comments
    http://wx2.sinaimg.cn/large/9f0e9ec6gy1fislz0eyqqj20u00u0qa6.jpg
    http://wx4.sinaimg.cn/large/9f0e9ec6gy1fislyuw9x5j20hs0m8gmw.jpg
    http://wx4.sinaimg.cn/large/9f0e9ec6gy1fislyk4bnaj20u00ppta9.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fislyfpbhgj20m80rs75n.jpg
    http://wx2.sinaimg.cn/large/9f0e9ec6gy1fislsitpsuj20u00jy762.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fislsngr3ej20u00u048g.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fislste0s7j20u011iq4e.jpg
    http://wx3.sinaimg.cn/large/9f0e9ec6gy1fislsxqiufj20qo0xcwgs.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fislt7yu7ej20u00u0djr.jpg
    http://wx4.sinaimg.cn/large/85754795gy1fislqbua3xg20dc077e81.gif
    http://wx1.sinaimg.cn/large/006qcTrDgy1firr3u44xyj30qo13ztfa.jpg
    http://ws1.sinaimg.cn/large/6f8a2832gy1fidpiixosaj218g0p0aig.jpg
    http://wx1.sinaimg.cn/large/9f0e9ec6gy1fisj050txbg206y06yqv5.gif
    http://wx2.sinaimg.cn/large/4758cde5gy1firb0wieixj20j60t6wif.jpg
    http://wx3.sinaimg.cn/large/006i7pDIgy1fisfg11igig30gw0u01l5.gif
    http://wx1.sinaimg.cn/large/006i7pDIgy1fisfgl5pyfg30gw0u0qvg.gif
    http://wx3.sinaimg.cn/large/e00d3251gy1fisfmr4g5wj20u02vib2a.jpg
    http://wx2.sinaimg.cn/large/64bd7fffgy1fise25dd7gj20f00f0abt.jpg
    http://wx1.sinaimg.cn/large/64bd7fffgy1fise275rr4j20f00f0tan.jpg
    http://wx1.sinaimg.cn/large/64bd7fffgy1fise26aoz8j20f00gwaaw.jpg
    http://wx1.sinaimg.cn/large/64bd7fffgy1fise27msl1j20f00f03zm.jpg
    http://wx4.sinaimg.cn/large/64bd7fffgy1fise28edb1j20f00f00tp.jpg
    http://wx2.sinaimg.cn/large/cd770802gy1fisdg41dyoj2140138kjl.jpg
    http://wx3.sinaimg.cn/large/c1d0f1f0ly1fis8aw8e96g206y07se81.gif
    http://ws1.sinaimg.cn/large/cd770802gy1fis7gngws0j2140138kjl.jpg
    http://wx2.sinaimg.cn/large/005TKA75gy1fip17c2t1ej30xc1e0n84.jpg
    http://wx3.sinaimg.cn/large/a0743fbely1fis6vai8oaj20jg0rsngl.jpg
    http://ws2.sinaimg.cn/large/bcd523a5ly1fis4y53j4pg209q0f5x6p.gif
    http://wx4.sinaimg.cn/large/005N2QgRgy1firt7txdr9j30zk1hck9m.jpg
    http://wx1.sinaimg.cn/large/006VfFm9gy1firswiqna4j30b40godgx.jpg
    http://wx2.sinaimg.cn/large/006VfFm9gy1firswcfsadj30dz0kuabh.jpg
    http://wx4.sinaimg.cn/large/006VfFm9gy1firsw6pgtwj30g40o60ub.jpg
    http://wx3.sinaimg.cn/large/96c1121bgy1firrm6bbx2j20b40gotbf.jpg
    http://wx1.sinaimg.cn/large/006xtmYzgy1fgq6jmiyqmj32ip1w0u12.jpg
    http://wx1.sinaimg.cn/large/006xtmYzgy1fgq6jtd845j32ip1w01l2.jpg
    http://wx3.sinaimg.cn/large/006xtmYzgy1fgq6k0kyyej32ip1w0qv9.jpg
    

声明

以上就是我的最初级的煎蛋爬虫,以后会慢慢填充其他功能,图片下载功能,图片过滤功能,代理设置等等。欢迎自己动手玩玩!^_^

开源地址为:https://git.coding.net/Deteriorator/jiandan.git

版权声明:  本站原创文章,于 2017-08-23,由 Darker 发表。
转载请注明:原文地址:《自己动手写项目:煎蛋爬虫 | 飘零博客》
本站所有文章如果没有特殊声明均为原创。本文作者 : Darker
复制或转载请以超链接形式注明:飘零博客    
原文地址:《自己动手写项目:煎蛋爬虫 | 飘零博客》
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
//

欢迎光临