pyspider 爬取淘宝食品
来源:互联网 发布:苹果赚钱软件 编辑:程序博客网 时间:2024/04/30 15:58
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 参考资料及其记录
- windows 上 pyspider 出现各种莫名其妙的问题, 建议使用 linux
- Python Objects与String之间转换 : http://blog.sina.com.cn/s/blog_4ddef8f80102v8af.html
- mysqldb 使用 http://blog.csdn.net/zhyh1435589631/article/details/51544903
- pyspider 属性 https://pythonhosted.org/pyquery/attributes.html
- mysqldb 安装出错: http://stackoverflow.com/questions/5178292/pip-install-mysql-python-fails-with-environmenterror-mysql-config-not-found
- 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 reimport jsonimport 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.text pattern = 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. 效果
1 0
- pyspider 爬取淘宝食品
- python网络爬虫学习(六)利用Pyspider+Phantomjs爬取淘宝模特图片
- cve_details按照时间爬取(pyspider)
- 使用pyspider爬虫爬取百度图片
- 基于pyspider的大众点评数据爬取总结
- 使用Pyspider 框架爬取全球的注册公司列表
- 淘宝商品评论爬取
- 爬取淘宝MM图片
- 淘宝搜索定向爬取
- Selenium+PhantomJS爬取淘宝
- python3爬取淘宝信息
- python3爬取淘宝信息!
- python 爬取淘宝信息
- python-爬取淘宝商品
- 淘宝商品数据爬取
- Selenium 爬取淘宝数据
- Python爬取淘宝图片
- 肌肤食品揭秘淘宝骗子经典伎俩
- dubbo框架远程调用bug记录
- 荣耀v8 真机调试时不显示 Logcat 日志的解决办法
- QT5.5-5.7 +MySQL5.5链接问题
- 微信支付商户系统架构背后的故事
- 学习经历
- pyspider 爬取淘宝食品
- ajax后台调用
- Python编程入门-第八章 输入和输出 -学习笔记
- [八]java作业
- 再看三大类设计模式
- 手机QQ会员H5加速方案——sonic技术内幕
- android调用jni使用ffmeg把h264转yuv数据
- 第二十三讲项目4-三角公式求值
- 运算符