• 大小: 1.1MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-15
  • 语言: Python
  • 标签: PYTHON  

资源简介

Python爬取淘宝上所有耐克鞋商品并进行数据分析,有excle,柱状图,饼图,散点图

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Tue Nov 20 20:56:27 2018

@author: wangf
“““
import re
import time
import requests
import pandas as pd
from retrying import retry
from concurrent.futures import ThreadPoolExecutor

start = time.clock()     #计时-开始

#plist 为1-100页的URL的编号num 
plist = []           
for i in range(1101):   
    j = 44*(i-1)
    plist.append(j)

listno = plist
datatmsp = pd.Dataframe(columns=[])

while True: 
   @retry(stop_max_attempt_number = 8)     #设置最大重试次数
   def network_programming(num):   
      url=‘https://s.taobao.com/search?q=%E8%80%90%E5%85%8B&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170710\
      &ie=utf8&sort=sale-desc&style=list&fs=1&filter_tianmao \
      =tmall&filter=reserve_price%5B500%2C%5D&bcoffset=0&     \
      p4ppushleft=%2C44&s=‘ + str(num)   
      web = requests.get(url headers=headers)     
      web.encoding = ‘utf-8‘
      return web   

#   多线程       
   def multithreading():     
      number = listno        #每次爬取未爬取成功的页
      event = []
   
      with ThreadPoolExecutor(max_workers=10) as executor:
         for result in executor.map(network_programming
                                    number chunksize=10):
             event.append(result)   
      return event
   
#   隐藏:修改headers参数    
   headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; WOW64) \
            AppleWebKit/537.36(KHTML like Gecko)  \
            Chrome/70.0.3538.102 Safari/537.36‘}
   
   listpg = []
   event = multithreading()
   for i in event:
      json = re.findall(‘“auctions“:(.*?)“recommendAuctions“‘ i.text)
      if len(json):
         table = pd.read_json(json[0])      
         datatmsp = pd.concat([datatmsptable]axis=0ignore_index=True)  
         
         pg = re.findall(‘“pageNum“:(.*?)“p4pbottom_up“‘i.text)[0]
         listpg.append(pg)      #记入每一次爬取成功的页码
   
   lists = []
   for a in listpg:   
       b = 44*(int(a)-1)
       lists.append(b)     #将爬取成功的页码转为url中的num值
   
   listn = listno

   listno = []       #将本次爬取失败的页记入列表中 用于循环爬取
   for p in listn:
       if p not in lists:
           listno.append(p)
           
   if len(listno) == 0:     #当未爬取页数为0时 终止循环!
      break
      
datatmsp.to_excel(‘datatmsp.xls‘ index=False)    #导出数据为Excel

end = time.clock()    #计时-结束
print (“爬取完成 用时:“ end - start‘s‘) 
‘‘‘
二、数据清洗、处理: (此步骤也可以在Excel中完成 再读入数据)
‘‘‘
datatmsp = pd.read_excel(‘datatmsp.xls‘)     #读取爬取的数据 
#datatmsp.shape   
 
# 数据缺失值分析: 此模块仅供了解  #见下<图1>
# 安装模块:pip install missingno
import missingno as msno
msno.bar(datatmsp.sample(len(datatmsp))figsize=(104))   

# 删除缺失值过半的列: 仅供了解 本例中可以不用
half_count = len(datatmsp)/2
datatmsp = datatmsp.dropna(thresh = half_count axis=1)

# 删除重复行:
datatmsp = datatmsp.drop_duplicates()   


‘‘‘
说明:根据需求,本案例中我只取了 item_loc raw_title view_price view_sales 这4列数据,
主要对 标题、区域、价格、销量 进行分析,代码如下: 
‘‘‘
# 取出这4列数据:
data = datatmsp[[‘item_loc‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    4261888  2018-12-24 21:51  淘宝2\datatmsp.xls

     文件      53070  2018-12-24 21:51  淘宝2\Price.xlsx

     文件     147454  2018-12-24 19:40  淘宝2\Price_max.xlsx

     文件     147176  2018-12-24 21:51  淘宝2\Price_mean.xlsx

     文件     147442  2018-12-24 19:40  淘宝2\Price_min.xlsx

     文件     118093  2018-11-20 20:55  淘宝2\stopwords.xlsx

     文件      66325  2018-12-24 21:51  淘宝2\word_count.xlsx

     文件      13078  2018-12-24 19:44  淘宝2\淘宝2.py

     目录          0  2018-12-24 21:51  淘宝2

----------- ---------  ---------- -----  ----

              4954526                    9


评论

共有 条评论