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 相关文章推荐
Python算法之栈(stack)的实现
Aug 18 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python统计中文字符数量的两种方法
Jan 31 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
使用Python制作微信跳一跳辅助
2018/01/31 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python求凸包及多边形面积教程
2020/04/12 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python处理写入数据代码讲解
2020/10/22 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
项目总经理岗位职责
2014/02/14 职场文书
学术诚信承诺书
2014/05/26 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015年考研复习计划
2015/01/19 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
公司年夜饭通知
2015/04/25 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
Redis Stream类型的使用详解
2021/11/11 Redis