爬取了20万淘宝店铺信息,我能干些什么?

写了个简单的多进程爬虫,按照热门类目,爬取了淘宝C点的20多万条店铺信息。

获取了店铺名、卖家昵称、店铺ID、店铺区域、店铺商品数量、店铺销量、店铺好评率、店铺等级等等信息。截图见文末

主要思路为:

一、从淘宝店铺搜索页面获取热门的类目信息;

def get_taobao_cate():
 url = 'https://shopsearch.taobao.com/search?app=shopsearch'
 driver = webdriver.PhantomJS(executable_path="F:\\phantomjs.exe")
 driver.get(url)
 driver.implicitly_wait(3)
 page = driver.page_source
 soup = BeautifulSoup(page,'lxml')
 cate_name = re.findall(r"q=(.*?)&tracelog=shopsearchnoqcat",str(soup))
 for c in cate_name:
 cname = urllib.parse.unquote(c,encoding='gb2312')
 cate_list.append(c)
 print(cname)
 print(cate_list)
二、按照热门类目信息,对店铺进行搜索,使用进程池Pool:
# 多线程执行 
pool = TheaderPool(processes=4) 
pool.map_async(get_seller_from_num,range(0,10020,20)) 
pool.close() 
pool.join()
三、解析淘宝搜索结果的Json数据,获取店铺信息:
def get_taobao_seller(keywords):
 # 爬取指定数量的店铺信息
 def get_seller_from_num(nums):
 url = "https://shopsearch.taobao.com/search?data-key=s&data-value={0}&ajax=true&_ksTS=1481770098290_1972&callback=jsonp602&app=shopsearch&q={1}&js=1&isb=0".format(nums,keywords)
 # url = "https://shopsearch.taobao.com/search?data-key=s&data-value={0}&ajax=true&callback=jsonp602&app=shopsearch&q={1}".format(nums,keywords)
 wbdata = requests.get(url).text[11:-2]
 data = json.loads(wbdata)
 shop_list = data['mods']['shoplist']['data']['shopItems']
 for s in shop_list:
 name = s['title'] # 店铺名
 nick = s['nick'] # 卖家昵称
 nid = s['nid'] # 店铺ID
 provcity = s['provcity'] # 店铺区域
 shopUrl = s['shopUrl'] # 店铺链接
 totalsold = s['totalsold'] # 店铺宝贝数量
 procnt = s['procnt'] # 店铺销量
 startFee = s['startFee'] # 未知
 mainAuction = s['mainAuction'] # 店铺关键词
 userRateUrl = s['userRateUrl'] # 用户评分链接
 dsr = json.loads(s['dsrInfo']['dsrStr'])
 goodratePercent = dsr['sgr'] # 店铺好评率
 srn = dsr['srn'] # 店铺等级
 category = dsr['ind'] # 店铺分类
 mas = dsr['mas'] # 描述相符
 sas = dsr['sas'] # 服务态度
 cas = dsr['cas'] # 物流速度
 data = {
 'name':name,
 'nick':nick,
 'nid':nid,
 'provcity':provcity,
 'shopUrl':shopUrl,
 'totalsold':totalsold,
 'procnt':procnt,
 'startFee':startFee,
 'goodratePercent':goodratePercent,
 # 'mainAuction':mainAuction,
 'userRateUrl':userRateUrl,
 'srn':srn,
 'category':category,
 'mas':mas,
 'sas':sas,
 'cas':cas
 }
 print(data)
 seller_info.insert_one(data)
 print("插入数据成功")
最后,用多进程执行:
if __name__ == '__main__':
 pool = Pool(processes=4)
 pool.map_async(get_taobao_seller,cate_list)
 pool.close()
 pool.join()

部分截图:

爬虫还比较粗糙,没有做任何的异常处理,也没有在数据插入的时候做重复值的判断(数据爬下来60多万,去重后只剩下20多万),没有使用IP代理池(这点小流量,阿里还是放过了)。

爬虫虽粗糙,数据还是拿下来了,接下来,用这些数据干些什么呢?

数据信息价值不大,需要的可以关注微信:州的先生,留言获取

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2016-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨龙飞前端

scrollto 到指定位置

2494
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4607
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4708
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3105
来自专栏落花落雨不落叶

canvas画简单电路图

60911
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4005
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31410
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2547

扫码关注云+社区