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实现扫描端口示例
Mar 29 Python
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python使用OpenCV进行标定
May 08 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
django 实现电子支付功能的示例代码
Jul 25 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
使用python实现多维数据降维操作
Feb 24 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
Python字典实现伪切片功能
Oct 28 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
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
简单解决Python文件中文编码问题
2015/11/22 Python
python生成式的send()方法(详解)
2017/05/08 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
python主要用于哪些方向
2020/07/05 Python
高中毕业自我评价
2014/02/08 职场文书
听证通知书
2015/04/24 职场文书
表扬信格式模板
2015/05/05 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
python中pycryto实现数据加密
2022/04/29 Python