python, 爬蟲爬取彩票網數據,pandas分析數據並實現可視化餅圖


import lxml
import requests
from lxml import etree

url = 'https://datachart.500.com/ssq/history/newinc/history.php?limit=5000&sort=0'
resp = requests.get(url)
hm = etree.HTML(resp.text)
# 在返回頁面內容的任意位置查找id=tdata的tbody標簽,並取其下所有的tr標簽內容,賦給trs列表
trs = hm.xpath("//tbody[@id='tdata']/tr")

f = open('data.csv', 'w') # 將攫取的數據存到data.csv文件
for tr in trs:
    data_lst = tr.xpath('td/text()')
    # 准備寫入文件,以備后用,csv文件是pandas能直接讀取的,最有效率
    #去掉列表中的逗號和\xa0,使用的是列表推導式完成這個任務
    data_lst = [x.replace(',','').replace('\xa0','') for x in data_lst]
    f.write(','.join(data_lst) + '\n')
f.close()

  用xpath獲取數據,並存成data.csv,便於以后用pandas讀取分析。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv', header = None)

# 提取紅球開獎號碼,在1-6列上
red_ball = df.loc[:,1:6] # 紅球開獎號碼在第1-6列上,提取所有行
# 統計紅球各個開獎號碼出現的次數
red_count = pd.value_counts(red_ball.values.flatten())

# 提取藍球出現的次數
blue_ball = df.loc[:, 7]
# 統計藍球各個開獎號碼出現的次數
blue_count = pd.value_counts(blue_ball.values.flatten())

# 可視化
plt.pie(red_count, labels = red_count.index, radius = 1, wedgeprops = {'width':0.3})
plt.pie(blue_count, labels = blue_count.index, radius = 0.5, wedgeprops = {'width': 0.3})
plt.show()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM