1.开始
pyspider更加容易调试,scrapy默认的debug模式信息量太大,warn模式信息量太少,由于异步框架出错后是不会停掉其他任务的,也就是出错了还会接着跑。。。从整体上来说,pyspider比scrapy简单,并且pyspider可以在线提供爬虫服务,也就是所说的saas,想要做个简单的爬虫推荐使用它,但自定义程度相对scrapy低,社区人数和文档都没有scrapy强,但scrapy要学习的相关知识也较多,故而完成一个爬虫的时间较长。
python那些事——pyspider能干嘛?爬取某宝呀!
pyspider的相关资料,大家有兴趣的可以去看看!在这里为大家简单介绍下:
pyspiders是国内某大神开发了个webui的[pyspider](github - binux/pyspider: a powerful spider(web crawler) system in python.)
2. 实现流程
2.1 分析网页
我们的目标站点是 :某宝咯!你们的懂的!
根据这个信息,我们可以非常方便的解析出相应商品的各种信息, 然而并不是这样, 商品的数据都是通过json异步加载出来的。
从网页源码来看, 根本提取不到任何有用信息
这个是没有加载上json数据时候的基本情况
通过chrome强大的监控功能,我们找到了请求的数据
得到数据源之后, 处理就比较方便了
2.2 参考资料及其记录
windows 上 pyspider 出现各种莫名其妙的问题, 建议使用 linux
python objects与string之间转换 :
mysqldb 使用
mysqldb 安装出错: ?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 = repile('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])1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
3. 效果
以上就是基本的爬去了,至于在深入一点,咳咳,平台会限制的...我也很无奈,之前尝试发了一些破解类文章,结果很现实,所以有什么不明白的可以留言讨论哦!
你们的支持是我更新的最大动力!