淘宝商品数据分析实战

对上一节学习笔记的代码稍作修改,就可以抓取淘宝商品中的销量并保存在txt文件中。

程序步骤:

  1. 提交商品搜索请求,循环获取页面
  2. 对每个页面,提取商品名称、价格信息和销量
  3. 将信息输出txt文件

代码如下:

import requests
import re

#获取网页
def getHTMLText(url):
     try:
          r = requests.get(url)
          r.raise_for_status()
          r.encoding = r.apparent_encoding
          return r.text
     except:
          return ""
     

#使用正则表达式匹配需要的内容
     
"""
可以在网站源码中看到价格的标签是:"view_sales":"424人付款"
其正则表达式可以表示为:\"view_sales"\:\"[\d]*\人付款\"
或者使用数字加汉子匹配,汉子匹配方式如下:
[\u4E00-\u9FA5\\s]+      多个汉字,包括空格
[\u4E00-\u9FA5]+         多个汉字,不包括空格
[\u4E00-\u9FA5]          一个汉字

"""
def parsePage(ilt,html):
     try:
          plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)
          tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)
          vlt = re.findall(r'\"view_sales"\:\"[\d]*[\u4E00-\u9FA5]+\"',html)
          for i in range(len(plt)):
               price = eval(plt[i].split(':')[1])
               title = eval(tlt[i].split(':')[1])
               sales = eval(vlt[i].split(':')[1])
               ilt.append([price,title,sales])
     except:
          print("")


#输出文本内容,这里我将它写入txt文件保存了起来。
def printGoodList(ilt):
     tplt = "{:4}\t{:8}\t{:10}\t{:16}"
     with open('bag.txt','w+') as f: 
          f.write(tplt.format("序号","价格","销量","商品名") + '\n')
          count = 0
          for g in ilt:
               count = count +1
               f.write(tplt.format(count,g[0],g[2],g[1]) + '\n')

def main():
     goods = '书包'
     depth = 2
     start_url = 'https://s.taobao.com/search?q=' + goods
     infoList = []
     for i in range(depth):
          try:
               url = start_url + '&s=' + str(44*i)
               html = getHTMLText(url)
               parsePage(infoList,html)
          except:
               continue
     printGoodList(infoList)
main()

 

posted @ 2018-02-20 17:00  未来分析师  阅读(423)  评论(0编辑  收藏  举报