读者来稿 。BTW ,加星标不迷路噢 !
小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,对面的女孩看过来(邪恶的一笑),让人想入非非啊,一看卧槽,左边这妹子彻底赢了,这(**)这么大,还这么漂亮,谁受的了啊,都快流鼻血。。。
然后小弟冥思苦想,得干一点有趣的事情,想了想,python 这么叼,来个Python爬取奶罩信息的案例试试。于是乎,小弟迫不及待了,想要撸一把(当然是代码啦)
大家随我去逛逛淘宝商城吧,驾驾驾,快马加鞭,当当当,一搜,好多啊,好漂亮啊,好大啊,上图上图,小心你的鼻子哦(嘻嘻)
好,今天我们就来好好的撸一把吧,爽他一吧。准备给大家来一波午夜福利 。我们来看看我们今天需要用到什么利器,
神器准备
import requests import json import csv
- requests 库:就想象成你搜索美图链接,
- json 库:就是数据加载了,你看到了大奶妞那张图
- csv 库:你想想,这样不过瘾啊,必须把它保存下来啊,每天看她个几百遍
经过我的使尽吃奶的力气,分析了一遍,闻到了阵阵奶香的味道。我们把它的请求链接拿出来研究一下
https://s.taobao.com/api?_ksTS=1540176287763_226&callback=jsonp227&ajax=true&m=customized&sourceId=tb.index&_input_charset=utf-8&bcoffset=-1&commend=all&suggest=history_1&source=suggest&search_type=item&ssid=s5-e&suggest_query=&spm=a21bo.2017.201856-taobao-item.2&q=内衣女&s=36&initiative_id=tbindexz_20170306&imgfile=&wq=&ie=utf8&rn=9e6055e3af9ce03b743aa131279aacfd
经过各种奇淫技巧,原来她。。。
https://s.taobao.com/api?callback=jsonp227&m=customized&q=内衣女&s=36
行了,开撸吧。老铁们,稳住,上车了
功能实现
根据我们的火眼金睛,对奶罩各种信息的分析,看穿秋水啊,鼻血就差一点流出来了,还好忍住了,代码应该这样撸:
import requests import json url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=内衣女&s=36" r = requests.get(url) response = r.text # 截取成标准的JSON格式 # 由于Ajax返回的数据是字符串格式的饿,在返回的值jsonp227(XXX)中 # XXX部分是JSON格式数据,因此先用字符串split()截取XXX部分, #然后将XXX部分由字符串格式转成JSON格式的数据读取 response = response.split('(')[1].split(')')[0] # 读取JSON response_dict = json.loads(response) # 定位到商品信息列表 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
想了又想,时间过的太快了,不行啊,只看一遍不行,来他个88遍循环,爽个够吧,兄弟们,(脑壳不疼?):
for p in range(88): url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=内衣女&s=%s" % (p) r = requests.get(url) # 获取响应信息字符串 response = r.text # 转换成JSON格式 response = response.split('(')[1].split(')')[0] # 加载数据 response_dict = json.loads(response) # 商品信息 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
还是看的不爽啊,再加一层,:
for k in ['内衣女','内衣']: for p in range(88): url = "https://s.taobao.com/api?callback=jsonp227&m=customized&q=%s&s=%s" % (k,p) r = requests.get(url) response = r.text response = response.split('(')[1].split(')')[0] response_dict = json.loads(response) # 商品信息 response_auctions_info = response_dict['API.CustomizedApi']['itemlist']['auctions']
数据存储
你想了又想,要是今天看爽了,那明天要是想再看看呢,怎么办啊,小弟告诉你个好方法,偷偷的点击收藏啊,保存下来啊,小弟现在就教你如何储存奶罩信息:
def get_auctions_info(response_auctions_info,file_name): with open(file_name,'a',newline='') as csvfile: # 生成CSV对象,用于写入CSV文件 writer = csv.writer(csvfile) for i in response_auctions_info: # 判断是否数据已经记录 if str(i['raw_title']) not in auctions_distinct: # 写入数据 # 分别是商品信息列表和CSV文件路径。 # 但该文件并没有对CSV设置表头,所以在开始获取数据之前。 # 应该生成对应CSV文件,并设定其表头 writer.writerrow([i['raw_title'],i['view_price'],i['view_sales'],i['nick'],i['item_loc']]) auctions_distinct.append(str(i['raw_title'])) csvfile.close()
哇,好辛苦啊,撸的这么辛苦,希望各位尽情享受吧 。最后贴出爬取内容信息如下:
内衣信息
总结
- 祝大家泡妞成功
- 给老婆买这个,记得回来看这篇文章哦
- 去除无用的链接的参数,简化链接
- 分析URL的请求参数含义以及响应内容的数据规律
- 数据储存的去重判断