1. 前言

牛课网在组织一个编程之美的活动, 这次的题目是 http://www.nowcoder.com/discuss/18223?type=0&order=0&pos=2&page=1
正好是使用爬虫进行操作的。就想到使用pyspider写一下了。
pyspider的相关资料:
http://docs.pyspider.org/en/latest/tutorial/

2. 实现流程

2.1 分析网页

我们的目标站点是 https://chi.taobao.com

根据这个信息,我们可以非常方便的解析出相应商品的各种信息, 然而并不是这样, 商品的数据都是通过json异步加载出来的。

从网页源码来看, 根本提取不到任何有用信息

这个是没有加载上json数据时候的基本情况


通过chrome强大的监控功能,我们找到了请求的数据
得到数据源之后, 处理就比较方便了

2.2 参考资料及其记录

  1. windows 上 pyspider 出现各种莫名其妙的问题, 建议使用 linux
  2. Python Objects与String之间转换 : http://blog.sina.com.cn/s/blog_4ddef8f80102v8af.html
  3. mysqldb 使用 http://blog.csdn.net/zhyh1435589631/article/details/51544903
  4. pyspider 属性 https://pythonhosted.org/pyquery/attributes.html
  5. mysqldb 安装出错: http://stackoverflow.com/questions/5178292/pip-install-mysql-python-fails-with-environmenterror-mysql-config-not-found
  6. pyspider 解析json https://segmentfault.com/a/1190000002477870

2.3 数据库相关

2.4 实现代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2016-11-05 23:18:55
# Project: taobao_foodfrom pyspider.libs.base_handler import *
import re
import json
import MySQLdbclass Handler(BaseHandler):# 数据库链接配置def __init__(self):db_host= "127.0.0.1"user= "root"passwd="zhyh2010"db="taobao_food"charset="utf8"conn = MySQLdb.connect(host=db_host, user = user, passwd=passwd, db=db, charset=charset)conn.autocommit(True)self.db=conn.cursor()# 爬虫的起始url@every(minutes=24 * 60)def on_start(self):self.crawl('https://tce.taobao.com/api/mget.htm?callback=jsonp221&tce_sid=659631&tce_vid=8,2&tid=,&tab=,&topic=,&count=,&env=online,online',callback=self.json_parser)# 解析相应的 json 数据  @config(age=24 * 60 * 60)def select_json(self, response):content = response.textpattern = re.compile('window.jsonp.*?\((.*?)\)', re.S)content_select = re.findall(pattern, content)return content_select[0].strip()# 提取相应数据 插入数据库表中def product_info(self, response):for data in response["result"]:            res = {"item_pic": "https:" + data["item_pic"],"item_youhui_price": data["item_youhui_price"],"item_title": data["item_title"]} sql ="insert into food_info(url, price, title) values (%s,%s,%s)" values = [(res["item_pic"], res["item_youhui_price"], res["item_title"])]self.db.executemany(sql, values)# 解析 json    @config(age=24 * 60 * 60)def json_parser(self, response):content = self.select_json(response)contents = json.loads(content)subres = contents["result"]for each in contents["result"]:info = self.product_info(subres[each])

3. 效果

pyspider 爬取淘宝食品相关推荐

  1. Scrapy-Splash爬取淘宝排行榜(二)

    四 开始爬取 1.首先分析淘宝排行榜的设置.在这里,商品被分为服饰,数码家电,化妆品,母婴,食品,文体,家具,车|玩具|宠物.而点开每个大类,又可以看到商品被分为很多小类.点开任意小类,往下拉就可以看 ...

  2. Scrapy-Splash爬取淘宝排行榜(一)

    一 引言 日前,自己因项目需要需要爬取淘宝排行榜,而淘宝因为用了很多的AJAX技术,不能用普通的爬虫爬取,于是我这里就想用如一些集成了PhantomJS或类似的python爬虫框架.一开始自己尝试了p ...

  3. python爬虫学习(三):使用re库爬取淘宝商品,并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字"python",然后搜索,显示如下搜索结果 从url连接中可以得 ...

  4. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品

    在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...

  5. 利用Selenium爬取淘宝商品信息

    文章来源:公众号-智能化IT系统. 一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...

  6. 爬取淘宝定价需要多久时间_如何对设计工作进行定价—停止收​​取时间并专注于价值

    爬取淘宝定价需要多久时间 Pricing creative work is a new concept for most freelancers who are starting their busi ...

  7. 爬取淘宝商品信息selenium+pyquery+mongodb

    ''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...

  8. python爬虫淘宝手机_【Python3 爬虫】14_爬取淘宝上的手机图片

    现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 我们可以看到左侧是主题市场,将鼠标移动到[女装/男装/内衣]这一栏目, ...

  9. Python爬虫实战03:用Selenium模拟浏览器爬取淘宝美食

    1 目标站点分析 淘宝页面信息很复杂的,含有各种请求参数和加密参数,如果直接请求或者分析Ajax请求的话会很繁琐.所以我们可以用Selenium来驱动浏览器模拟点击来爬取淘宝的信息.这样我们只要关系操 ...

  10. python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)

    本文主要向大家介绍了[云计算]爬取淘宝手机品牌词云分析(python),通过具体的内容向大家展现,希望对大家学习云计算有所帮助. 淘宝手机信息的爬取,请看这边博客(点击这里),然后我们利用其中保存的文 ...

最新文章

  1. jQuery浏览器类型判断和分辨率判断
  2. php mysql 图像_php-向/从MySQL数据库插入/查看图像
  3. NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)
  4. 视觉SLAM——稀疏光流法
  5. 句句真研—每日长难句打卡Day5
  6. mac的word中添加带圆圈的数字
  7. 让工程师拥有一台“超级”计算机——字节跳动客户端编译加速方案
  8. J2EE学习篇之--Struts1详解
  9. OSChina 周日乱弹 ——朕与先生解战袍,芙蓉帐暖度春宵
  10. 【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统
  11. 2019年云计算发展趋势,今年十大云计算趋势
  12. 10G整数中寻找中位数
  13. cyusb3014上位机同步传输与异步传输的实现
  14. 未名企鹅极客 | 人机图灵测试中数字图像处理方法研究
  15. java 将数据生成word文档,并实现打勾选择框
  16. Word里面文字怎么修改字体
  17. 百度地图JavaScript API GL1.0给折线添加箭头
  18. 因上努力,果上随缘。
  19. 用命令行的方式来执行7z压缩和解压缩
  20. android微博签名错误,Android 微博登录“sso package or sign error” 错误解决方案

热门文章

  1. Python模拟轮盘抽奖游戏
  2. grep的常用和次常用选项
  3. JZOJ 4809. 挖金矿
  4. 假设检验的一般步骤(t检验/z检验)
  5. CS5211设计方案|替代CH7511B设计电路|EDP转LVDS转接板设计参考电路
  6. c#程序设计实训报告心得体会_C#实训总结报告
  7. 论文模型图全攻略——模型图就该有模型图的样子!
  8. 微观经济学案例分析(八)
  9. 4G 网络跟 5G 的区别
  10. 安卓手机使用VNET抓包京东wskey