这是自己写的第一个使用Pyspider完成数据抓取,小有收获,最近这几天一直都在折腾这个Pyspider,算是有点入门吧。能感觉出国人写的框架,有点熟悉的味道,觉得使用习惯有点接近吧,个人感觉,不喜勿喷。有问题还是得多看官方文档,对于刚刚入门的同学来说,官方文档能帮你解决很多问题。有问题时先去官方文档上找,找不到再去Google,这样应该会好一点。
下面是小米众筹产品的实例,亲测没问题,可以直接拷贝到http://demo.pyspider.org/新建一个项目进行测试。
使用Python3.X的同学可能需要修改一下代码,由于我之前搭建的环境是2.7的,后面有时间了再来进行迁移,我个人还是比较倾向于使用3.X版本的,毕竟3.X是趋势吧。官方的测试服务器的Python版本也是2.7的。好了,闲话说了很多,下面直接上代码:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2017-07-14 10:36:36
# Project: xiaomifrom pyspider.libs.base_handler import *
import urllib
import time
import jsonclass Handler(BaseHandler):#配置通用的请求属性crawl_config = {'headers' : {'Connection':'keep-alive','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.8','content-type':'application/x-www-form-urlencoded','Referer':'//home.mi.com/crowdfundinglist?id=78&title=%E4%BC%97%E7%AD%B9','User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}}@every(minutes=24 * 60)def on_start(self):#获取所有的产品详细产品地址param = 'data=%7B%22HomeList%22%3A%7B%22model%22%3A%22Homepage%22%2C%22action%22%3A%22BuildHome%22%2C%22parameters%22%3A%7B%22id%22%3A12%7D%7D%7D'self.crawl('https://home.mi.com/app/shopv3/pipe',method="GET",params=param,callback=self.index_page)@config(age=60 * 60) def index_page(self, response):#获取单个产品的详细信息for each in response.json['result']['HomeList']['data']:gid = each['gid']detailparm = "{\"detail\":{\"model\":\"Shopv2\",\"action\":\"getDetail\",\"parameters\":{\"gid\":\"%s\"}},\"comment\":{\"model\":\"Comment\",\"action\":\"getList\",\"parameters\":{\"goods_id\":\"%s\",\"orderby\":\"1\",\"pageindex\":\"0\",\"pagesize\":3}},\"activity\":{\"model\":\"Activity\",\"action\":\"getAct\",\"parameters\":{\"gid\":\"%s\"}}}" % (gid,gid,gid)detailreq = urllib.quote(detailparm)detailreq = "data=" + detailreqdetailurl = "https://home.mi.com/app/shop/pipe?gid=%s" % gid #print detailurlself.crawl(detailurl,method='POST',data=detailreq ,callback=self.detail_page)@config(priority=2)def detail_page(self, response):#转换成Json格式的字符串resultjsonstr = json.dumps(response.json)result = json.loads(resultjsonstr)['result']['detail']['data']['good']#将返回的结果保存到文件resultfile = open("/tmp/xiaomi/%s.txt" % result['gid'].encode('utf-8'),'w')resultfile.write(resultjsonstr)resultfile.close()return {"编号": result['gid'].encode('utf-8'),"名称": result['name'].encode('utf-8'),"简介": result['summary'].encode('utf-8'),"支持人数":result['saled'].encode('utf-8'),"产品单价":result['price_min'].encode('utf-8'),"开始时间":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(float(result['ctime'].encode('utf-8')))),"当前时间":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(float(result['ctime'].encode('utf-8'))))}

Pyspider实例之抓取小米众筹产品相关推荐

  1. Python爬取小米众筹数据

    Python爬取小米众筹数据 #爬取小米众筹 import pymongo import requests import timeclient = pymongo.MongoClient('local ...

  2. 小米众筹产品数据抓取(Python)

    刚学习Python不久,这应该是学Python以来的第一个实战,总体来说感觉还行,应为之前用Java写过一个,现在用Python写,单论这个简单的功能,Python确实要比Java轻便很多.当然肯定是 ...

  3. 应用多线程抓取小米应用商店的例子

    多线程需要用到threading模块, 通过这种方法可以创建线程: from threading import Thread t_list = [] # 创建多个线程,括号里面3表示3个线程 for ...

  4. python数据分析实例:python抓取课工厂网站数据和分析

    在线教育网站学习,是很多人利于闲余时间进行充电的一种选择.本篇文章利用python抓取在线教育网站课工场课程页面的数据,进行简要分析. 通过使用requests库对课工场课程列表页进行抓取. 通过Be ...

  5. Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)...

    一.正则表达式 python正则常用的函数和方法 compile(pattern,flags=0)        对正则表达式pattern进行编译,flags是可选标识符,并返回一个regex对象 ...

  6. 第一个爬虫实例-简单抓取网页内容

    通过以上各种各样的坑,也就是完成以下2个软件的安装,和另外若干包的安装后,终于可以爬虫一个实例. 新手关于python2.7.11 与 IDE pycharm的安装于使用 python下安装easy_ ...

  7. 使用CC2531 USB Dongle 抓取小米Zigbee智能硬件数据包

    1 准备工作 硬件①: CC2531 USB Dongle 硬件②: 智能家庭礼装板 (单独购买需要现在网关绑定各种节点) 软件①:TiWsPc 软件②:SmartRF_Packet_Sniffer ...

  8. 用QXDM抓取小米6短信包,手机收到短信,但QXDM找不到lte nas emm plain ota incoming message。求问大神指点

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  9. 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单

    编者按:互联网上有浩瀚的数据资源,要想抓取这些数据就离不开爬虫.鉴于网上免费开源的爬虫框架多如牛毛,很多人认为爬虫定是非常简单的事情.但是如果你要定期上规模地准确抓取各种大型网站的数据却是一项艰巨的挑 ...

最新文章

  1. 后端说:只是你不懂怎么用 headers!
  2. 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
  3. python日志模块为什么打印到界面_如何将外部模块的日志消息打印到主Python模块的终端窗口?...
  4. Map转xml格式字符串
  5. java中ftp删除文件,Java 实现ftp 文件上传、下载和删除
  6. 线程与线程池(一条龙详解)
  7. libevent网络编程例子(1)
  8. 狗窝里的小日子- 7 ...
  9. 性能测试的重要意义(一)
  10. VUE自学日志02-应用与组件实例
  11. 王琪你计算机学院,计算机学院“计忆时光”2019元旦联欢会暨年度颁奖典礼圆满举行...
  12. 编程实现 带符号减法溢出判断
  13. WPF整理-使用ResourceDictionary管理Logical Resources
  14. CCBPM 同表单分合流说明
  15. jupyter怎么安装jieba_记录 anaconda安装jieba
  16. 网络电视接口 php,【小白教程】智能电视背后这些接口怎么用?
  17. 伽马函数公式 ∫x^ne^{-x}dx=n!
  18. 解决麒麟V10上传文件乱码问题
  19. 安装程序出现2502、2503错误解决方法
  20. 关于URL重写的实现

热门文章

  1. 运算符优先级、案例技术:键盘的录入技术、流程控制语句
  2. 3.11 怎么增加小红书评论区的互动?【玩赚小红书】
  3. 宝德服务器装系统时重启,宝德PR2310N服务器RAID配置与win2017系统安装手册.doc
  4. 华侨城黄金周期间接待游客650万人次
  5. 计算机语言翻译的情诗,英文爱情诗句 英文情诗带翻译
  6. android 仿微信9宫格图片
  7. excel每行数据按模板导出一个或多个文件,可插入图片、条形码或二维码
  8. ffmpeg 支持用h265编码的rtmp
  9. ps学习之路(三)文字和段落工具、字体的安装
  10. java中final double_举例讲解Java中final关键字的用法