Python使用Scrapy爬取妹子图


Posted in Python onMay 28, 2015

Python Scrapy爬虫,听说妹子图挺火,我整站爬取了,上周一共搞了大概8000多张图片。和大家分享一下。

核心爬虫代码

# -*- 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()

项目地址:https://github.com/ZhangBohan/fun_crawler

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
对Python信号处理模块signal详解
Jan 09 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Python正则表达式急速入门(小结)
Dec 16 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 Python
Python实现统计单词出现的个数
May 28 #Python
Python下载懒人图库JavaScript特效
May 28 #Python
Python实现给qq邮箱发送邮件的方法
May 28 #Python
Python import用法以及与from...import的区别
May 28 #Python
Python中使用不同编码读写txt文件详解
May 28 #Python
Python实现统计英文单词个数及字符串分割代码
May 28 #Python
python处理大数字的方法
May 27 #Python
You might like
理解PHP5中static和const关键字的区别
2007/03/19 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python读取网页内容的方法
2015/07/30 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python中lambda()的用法
2017/11/16 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
泰国第一在线超市:Tops
2021/02/13 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
小学班干部竞选演讲稿
2014/04/24 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript