美文网首页大数据 爬虫Python AI SqlPython小哥哥
淘宝上面的书真的卖出去如此之多吗?我用Python来揭开它的内幕

淘宝上面的书真的卖出去如此之多吗?我用Python来揭开它的内幕

作者: 14e61d025165 | 来源:发表于2019-03-13 13:17 被阅读0次

我既误杀阿朱,此生终

不再娶。阿朱就是阿朱,四海列国,千秋万载,就只一个阿朱。岂是一千个、一万个汉人美女所能代替得了的?

金庸

欢迎大家加入小编创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553

本文来自《小甲鱼python基础》,下面的注释是我的笔记,视频没法共享,请到淘宝官网支持正版,共建和谐社会,支持版权,侵删,进入 淘宝官网,在搜索框输入关键词“零基础入门学习Python”并搜索

可以看到上方的 URL 变得很长(增加了很多查询字符串):https://s.taobao.com/search?q=%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8%E5%AD%A6%E4%B9%A0Python&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20171102&ie=utf8,问号后面的都是查询字符串,用&把它们拼接起来

经过多番测试,这个 URL 只需要包含 https://s.taobao.com/search?q=零基础入门学习python即可

这里有个坑,淘宝反爬虫,就是使用默认的搜索会自带一些广告商品和无关内容,并且,从浏览器看一个页面是 44 个商品,但爬虫解析到的却是 36 个,更惨的是,爬虫获取的数据跟浏览器看到的还不完全一致,大家也可以自己尝试一下,没有思路的鱼油请继续往下看,最后有代码清单

按销量排序,在上一个思路碰壁之后,我们决定另辟蹊径,既然是要统计销量,何不让商品按照销量来排序呢  

OK,发现链接多了个查询字符串:&sort=sale-desc,表示按销量排序,爬一下试试

导入模块

定义open_url,用来打开链接,返回链接的内容

我们把上面获得的查询关键字组成一个字典,第一个元素的键是q,值是keyword,第二个元素的键是sort,值是sale-desc,我们的requests会自动的把payload字典的内容转化为对应的查询字符串,添加到查询链接里面去

代码

把网址赋值给url

完整代码

运行代码并输入关键词“零基础入门学习Python”,我们得到一个 items.txt 的文本文件,有些童鞋可能会问,为啥不将 res.text 直接打印出来呢? 因为会死机,Python 的 IDLE 对于大量数据显示还是比较鸡肋的……,然后使用正则表达式提取关键数据 ,打开文本文件,我们得到下面这个东西

我们关注的数据都在 g_page_config 里面,所以现在的问题就变成了如何将 g_page_config 的内容单独提取出来, 从一个巨大的文本中提取局部带有特征的字符串,必须使用正则表达式,用下面的正则表达式提取 g_page_config 的内容

以为一目了然的方式还原数据结构 ,结构还是太复杂了,没眼看,由于存在很大字典间的嵌套,所以看起来很杂乱

我们可以写几行代码,将这些字典的层次结构给打印出来,注意,g_page_config 里面存放的数据是 JSON 格式,使用 json.loads() 方法可以将字符串还原为 Python 的数据结构。

下面,我们将嵌套字典的键按层次打印出来

这下层次清晰多了,当下面没有字典了,就打印键的值,并且在键的值前面写上一个-号,如果下面还有字典,打印这个键的值,并且在它前面加一个+号

提取目标数据,来到刚开始生成的 items.txt 文件,不难发现我们的目标数据在"auctions" 这个键的值中,再仔细一看,"auctions" 对应的值其实是一个列表,其中每个元素又存在字典的嵌套,化繁为简,我们先将 "auctions" 的值提取出来(从上面打印的结构层次中,可以看出 "mod" -> "itemlist" -> "data" -> "auctions" 的嵌套关系)

page_items 即那个列表,接着分析下这个列表表面上都有哪些键:

参照 items.txt 文件对号入座

既然找到了这些目标数据,那么要提取出来并统计销量就是易如反掌的事儿啦:

代码清单

相关文章

网友评论

    本文标题:淘宝上面的书真的卖出去如此之多吗?我用Python来揭开它的内幕

    本文链接:https://www.haomeiwen.com/subject/ejvzpqtx.html