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脚本操作文件的小示例分享
Aug 27 Python
Python基于select实现的socket服务器
Apr 13 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
pandas DataFrame索引行列的实现
Jun 04 Python
python调用自定义函数的实例操作
Jun 26 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
python连接mysql有哪些方法
Jun 24 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
Python实现对齐打印 format函数的用法
Apr 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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php函数连续调用实例分析
2015/07/30 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php实现微信支付之现金红包
2018/05/30 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
python映射列表实例分析
2015/01/26 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
linux面试相关问题
2013/04/28 面试题
大学生秋游活动方案
2014/02/17 职场文书
文秘个人求职信范文
2014/04/22 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫