-
大小: 4KB文件類型: .py金幣: 1下載: 1 次發(fā)布日期: 2021-06-18
- 語(yǔ)言: Python
- 標(biāo)簽: python??爬蟲??淘寶??網(wǎng)絡(luò)??數(shù)據(jù)??
資源簡(jiǎn)介
爬取淘寶手機(jī)月銷售數(shù)據(jù),以excel表格形式存儲(chǔ),以條形圖形式展示不同品牌手機(jī)在淘寶的月銷售量??梢酝ㄟ^更改關(guān)鍵字手機(jī)實(shí)現(xiàn)對(duì)其他商品的爬取。詳細(xì)介紹https://blog.csdn.net/weixin_42911616/article/details/81506154
代碼片段和文件信息
import?requests
import?pygal
import?re
from?xlwt?import?Workbook
import?matplotlib.pyplot?as?plt
import?xlrd
import?time
from?pylab?import?mpl
mpl.rcParams[‘font.sans-serif‘]?=?[‘FangSong‘]?#?指定默認(rèn)字體
mpl.rcParams[‘a(chǎn)xes.unicode_minus‘]?=?False?#?解決保存圖像是負(fù)號(hào)‘-‘顯示為方塊的問題
def?key_name(?number?):
????#獲取頁(yè)面的內(nèi)容并返回
????name?=?‘手機(jī)‘
????URL_1?=?“https://s.taobao.com/search?ie=utf8&initiative_id=staobaoz_20170905&stats_click=search_radio_all%3A1&js=1&imgfile=&q=“
????URL_2?=?“&suggest=0_1&_input_charset=utf-8&wq=u&suggest_query=u&source=suggest&p4ppushleft=5%2C48&s=“
????URL?=?(?URL_1?+?name?+?URL_2?+?str(number))
????#print(URL)
????res?=?requests.get(?URL?)
????return?res.text
def?find_date(?text):
????#根據(jù)整個(gè)頁(yè)面的信息,獲取商品的數(shù)據(jù)所在的HTML源碼并放回
????reg?=?r‘“data“:{“spus“:\[({.+?)\]}}“header“:‘
????reg?=?re.compile(reg)
????info?=?re.findall(reg?text)
????return?info[0]
def?manipulation_data(?info?sales_count?sheet?):
????#解析獲取的HTML源碼,獲取數(shù)據(jù)
????Date?=?eval(info)
????for?d?in?Date:
????????T?=?“?“.join([t[‘tag‘]?for?t?in?d[‘tag_info‘]])
????????#print(d[‘title‘]?+?‘\t‘?+?d[‘price‘]?+?‘\t‘?+?d[‘importantKey‘][0:len(d[‘importantKey‘])-1]?+?‘\t‘?+?T)
????????#將數(shù)據(jù)寫入對(duì)應(yīng)的excel表格中
????????sheet.write(sales_count[‘line‘]0d[‘title‘])
????????sheet.write(sales_count[‘line‘]1int(d[‘price‘]))
????????sheet.write(sales_count[‘line‘]2int(d[‘month_sales‘]))
????????sheet.write(sales_count[‘line‘]3T)
????????#統(tǒng)計(jì)不同品牌手機(jī)的月銷售量
????????for?key?in?sales_count.keys():
????????????if?str(d[‘title‘]).find(‘榮耀‘)>=0:
????????????????sales_count[‘華為‘]=sales_count[‘華為‘]+(int(d[‘month_sales‘]))
????????????elif?str(d[‘title‘]).find(str(key))>=0:
????????????????sales_count[key]=sales_count[key]+(int(d[‘month_sales‘]))
????????sales_count[‘line‘]=?sales_count[‘line‘]?+?1
????return?sales_count
def?show(sales_count):
????#按照手機(jī)銷售量進(jìn)行排序并繪圖(網(wǎng)頁(yè)版)
????sales_count=dict
評(píng)論
共有 條評(píng)論