zoukankan      html  css  js  c++  java
  • 淘宝商品数据分析实战

    对上一节学习笔记的代码稍作修改,就可以抓取淘宝商品中的销量并保存在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}	{:8}	{:10}	{:16}"
         with open('bag.txt','w+') as f: 
              f.write(tplt.format("序号","价格","销量","商品名") + '
    ')
              count = 0
              for g in ilt:
                   count = count +1
                   f.write(tplt.format(count,g[0],g[2],g[1]) + '
    ')
    
    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()
  • 相关阅读:
    Coursera台大机器学习基础课程学习笔记2 -- 机器学习的分类
    Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
    flash项目优化总结
    flash builder4.7bug
    [转] MovieClip转Bitmap方法
    flash builder关掉自动编译功能
    flash builder调试
    我喜欢的两种单例写法
    IE浏览器打开f12才正常
    [转] swf文件加密基础
  • 原文地址:https://www.cnblogs.com/BeautifulSoup/p/8455397.html
Copyright © 2011-2022 走看看