当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Python  » 其他
分享到: 
收藏 +0
6
Python Scrapy爬虫,听说妹子图挺火,我整站爬取了,上周一共搞了大概8000多张图片。和大家分享一下。

项目地址:https://github.com/ZhangBohan/fun_crawler
标签: Python Scrapy GitHub

代码片段(3) [全屏查看所有代码]

1. [图片] 0000.jpeg    

2. [代码]核心爬虫代码     跳至 [2] [全屏预览]

# -*- coding: utf-8 -*-
from scrapy.selector import Selector
import scrapy
from scrapy.contrib.loader import ItemLoader, Identity
from fun.items import MeizituItem


class MeizituSpider(scrapy.Spider):
    name = "meizitu"
    allowed_domains = ["meizitu.com"]
    start_urls = (
        'http://www.meizitu.com/',
    )

    def parse(self, response):
        sel = Selector(response)
        for link in sel.xpath('//h2/a/@href').extract():
            request = scrapy.Request(link, callback=self.parse_item)
            yield request

        pages = sel.xpath("//div[@class='navigation']/div[@id='wp_page_numbers']/ul/li/a/@href").extract()
        print('pages: %s' % pages)
        if len(pages) > 2:
            page_link = pages[-2]
            page_link = page_link.replace('/a/', '')    
            request = scrapy.Request('http://www.meizitu.com/a/%s' % page_link, callback=self.parse)
            yield request

    def parse_item(self, response):
        l = ItemLoader(item=MeizituItem(), response=response)
        l.add_xpath('name', '//h2/a/text()')
        l.add_xpath('tags', "//div[@id='maincontent']/div[@class='postmeta  clearfix']/div[@class='metaRight']/p")
        l.add_xpath('image_urls', "//div[@id='picture']/p/img/@src", Identity())

        l.add_value('url', response.url)
        return l.load_item()

3. [文件] fun_crawler-master.zip ~ 7KB     下载(1433)     [全屏预览]



开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(36)

  • 1楼:杰森斯坦森 发表于 2014-12-14 15:49 回复此评论
    真狠,整站都给扒了。。将来人家站长加header了。
  • 2楼:张伯函 发表于 2014-12-14 20:01 回复此评论

    引用来自“isaacchen”的评论

    真狠,整站都给扒了。。将来人家站长加header了。
    额,肿么加Header
  • 3楼:柚子模板网CTO 发表于 2014-12-15 11:29 回复此评论
    会不会限入死循环呀
  • 4楼:张伯函 发表于 2014-12-15 11:31 回复此评论

    引用来自“陈为迪”的评论

    会不会限入死循环呀
    不会的,下一页下一页爬的
  • 5楼:柚子模板网CTO 发表于 2014-12-15 11:36 回复此评论
    我最近在写一个采集程序。不过我的规则是一开始就设置好的,把网址抓下来之后还要对数据处理。我觉得还是数据处理这一块会比较麻烦。
  • 6楼:张伯函 发表于 2014-12-15 11:40 回复此评论
    可以用Scrapy-Redis这类插件先把数据持久化,然后做二次处理,处理数据肯定是最麻烦的一个环节

    https://github.com/darkrho/scrapy-redis
  • 7楼:Feng_Yu 发表于 2014-12-16 09:43 回复此评论
    这网站很火啊,天天被爬虫爬
  • 8楼:张伯函 发表于 2014-12-16 09:52 回复此评论

    引用来自“Feng_Yu”的评论

    这网站很火啊,天天被爬虫爬
    刚需嘛,你懂的
  • 9楼:liulu72056 发表于 2014-12-17 08:02 回复此评论
    发现一个好网站,谢谢分享
  • 10楼:Nicksxs 发表于 2014-12-17 16:51 回复此评论
    ImportError: No module named twisted
    已经安装了 twisted
  • 11楼:张伯函 发表于 2014-12-17 18:10 回复此评论

    引用来自“Nicksxs”的评论

    ImportError: No module named twisted
    已经安装了 twisted
    哦?怎么会报这个错误,刚刚试着重新安装了一次这个问题没有重现 (venv)➜ fun git:(master) ✗ pip list cffi (0.8.6) cryptography (0.6.1) cssselect (0.9.1) lxml (3.4.1) pip (1.5.4) pycparser (2.10) pyOpenSSL (0.14) queuelib (1.2.2) requests (2.5.0) Scrapy (0.24.4) setuptools (2.2) six (1.8.0) Twisted (14.0.2) w3lib (1.10.0) wsgiref (0.1.2) zope.interface (4.1.1)
  • 12楼:Nicksxs 发表于 2014-12-18 08:26 回复此评论

    引用来自“Nicksxs”的评论

    ImportError: No module named twisted
    已经安装了 twisted

    引用来自“张伯函”的评论

    哦?怎么会报这个错误,刚刚试着重新安装了一次这个问题没有重现 (venv)➜ fun git:(master) ✗ pip list cffi (0.8.6) cryptography (0.6.1) cssselect (0.9.1) lxml (3.4.1) pip (1.5.4) pycparser (2.10) pyOpenSSL (0.14) queuelib (1.2.2) requests (2.5.0) Scrapy (0.24.4) setuptools (2.2) six (1.8.0) Twisted (14.0.2) w3lib (1.10.0) wsgiref (0.1.2) zope.interface (4.1.1)
    是不是因为gfw?
  • 13楼:颓废的幻想者 发表于 2014-12-18 08:56 回复此评论

    引用来自“张伯函”的评论

    可以用Scrapy-Redis这类插件先把数据持久化,然后做二次处理,处理数据肯定是最麻烦的一个环节

    https://github.com/darkrho/scrapy-redis
    什么事数据持久化
  • 14楼:张伯函 发表于 2014-12-18 10:22 回复此评论

    引用来自“张伯函”的评论

    可以用Scrapy-Redis这类插件先把数据持久化,然后做二次处理,处理数据肯定是最麻烦的一个环节

    https://github.com/darkrho/scrapy-redis

    引用来自“myjack”的评论

    什么事数据持久化
    额。。。就是存起来。存到数据库、文件。只要不丢的地方都可以说是持久化
  • 15楼:张伯函 发表于 2014-12-18 10:23 回复此评论

    引用来自“Nicksxs”的评论

    ImportError: No module named twisted
    已经安装了 twisted

    引用来自“张伯函”的评论

    哦?怎么会报这个错误,刚刚试着重新安装了一次这个问题没有重现 (venv)➜ fun git:(master) ✗ pip list cffi (0.8.6) cryptography (0.6.1) cssselect (0.9.1) lxml (3.4.1) pip (1.5.4) pycparser (2.10) pyOpenSSL (0.14) queuelib (1.2.2) requests (2.5.0) Scrapy (0.24.4) setuptools (2.2) six (1.8.0) Twisted (14.0.2) w3lib (1.10.0) wsgiref (0.1.2) zope.interface (4.1.1)

    引用来自“Nicksxs”的评论

    是不是因为gfw?
    不是吧。你那边是什么系统。不会是Windows吧?
  • 16楼:猥琐致胜 发表于 2014-12-18 14:15 回复此评论
    你好,我程序运行起来之后,扒下的图片全是0字节大小
  • 17楼:张伯函 发表于 2014-12-18 14:46 回复此评论

    引用来自“猥琐致胜”的评论

    你好,我程序运行起来之后,扒下的图片全是0字节大小
    你那边是什么操作系统,程序LOG发出来看一下^_^
  • 18楼:猥琐致胜 发表于 2014-12-19 08:24 回复此评论

    引用来自“猥琐致胜”的评论

    你好,我程序运行起来之后,扒下的图片全是0字节大小

    引用来自“张伯函”的评论

    你那边是什么操作系统,程序LOG发出来看一下^_^
    用的是kali, 程序的log小白没找到╮(╯▽╰)╭,还望指教
  • 19楼:张伯函 发表于 2014-12-19 10:01 回复此评论

    引用来自“猥琐致胜”的评论

    你好,我程序运行起来之后,扒下的图片全是0字节大小

    引用来自“张伯函”的评论

    你那边是什么操作系统,程序LOG发出来看一下^_^

    引用来自“猥琐致胜”的评论

    用的是kali, 程序的log小白没找到╮(╯▽╰)╭,还望指教
    没问题啊。 程序运行之后LOG直接就是标准输出,直接在命令行里就可以看到的哦 额,弱弱的提醒一下,这个程序需要到那个Github地址下载完整的项目。PS:一会我打个包传上也
  • 20楼:Nicksxs 发表于 2014-12-19 11:01 回复此评论

    引用来自“Nicksxs”的评论

    ImportError: No module named twisted
    已经安装了 twisted

    引用来自“张伯函”的评论

    哦?怎么会报这个错误,刚刚试着重新安装了一次这个问题没有重现 (venv)➜ fun git:(master) ✗ pip list cffi (0.8.6) cryptography (0.6.1) cssselect (0.9.1) lxml (3.4.1) pip (1.5.4) pycparser (2.10) pyOpenSSL (0.14) queuelib (1.2.2) requests (2.5.0) Scrapy (0.24.4) setuptools (2.2) six (1.8.0) Twisted (14.0.2) w3lib (1.10.0) wsgiref (0.1.2) zope.interface (4.1.1)

    引用来自“Nicksxs”的评论

    是不是因为gfw?

    引用来自“张伯函”的评论

    不是吧。你那边是什么系统。不会是Windows吧?
    ubuntu14.10
开源从代码分享开始 分享代码
张伯函的其它代码 全部(3)...