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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
python实现简单多人聊天室
Dec 11 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
Django Celery异步任务队列的实现
Jul 24 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python快速实现一键抠图功能的全过程
Jun 29 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
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
javascript 一些用法小结
2009/09/11 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python内建数据结构详解
2016/02/03 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
如何在django中实现分页功能
2020/04/22 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
python3中for循环踩过的坑记录
2020/12/14 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
美国汽车交易网站:Edmunds
2016/08/17 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
2015年档案管理工作总结
2015/04/08 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
美容院员工规章制度
2015/08/05 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
springcloud整合seata
2022/05/20 Java/Android