爬虫实战之福彩3D

一.从网上爬取数据

​ 数据从2004年1月到2019年9月

import json
from lxml import etree
import requests
import time
# 由于之前将网页上需要的连接都爬取保存了,这里就直接读取
with open('test.txt','r') as f:
    url_set=f.read()
# 数据分割
list_url = list(url_set.split('\n'))
# 倒序(之前爬取是从新到旧)
url_list=list_url[::-1]
# 请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}

# 计数用
bb=0
# 函数爬取单页
def get_url(url_,headers):


    response = requests.get(url=url_,headers=headers)
    global bb
    bb+=1
    print("正在爬取{}的数据".format(url_))
    if response.status_code == 200:
        return response.content.decode('gbk')
    return None

# 标签选择函数
def sl_num(html):
    html = etree.HTML(html)
    number = html.xpath('//div[@class="ball_box01"]/ul/li/text()')
    seals = html.xpath('//div[@class="kjxq_box02"]//span[@class="cfont1 "]//text()')
    group = html.xpath('//div[@class="kjxq_box02"]//font[@class="cfont1"]/text()')
    text_num = html.xpath('//div[@class="kj_main01"]//tr[@align="center"]//div/text()')[2][4:]
    date_num = html.xpath('//div[@class="kjxq_box02"]//span[@class="span_right"]/text()')[0][5:16]
    yield  str(date_num)+','+str(number)+","+str(seals)+","+str(group)+","+str(text_num)

# 数据写入函数
def waite_data(data_set):
    with open('3d.txt','a') as f:
        print("正在写入数据..")
        f.write(data_set+'\n')
        global bb
        if bb>100:
            time.sleep(10)
            bb=0


if __name__ == '__main__':
    # 遍历连接列表爬取数据
    for url in url_list:
        response = get_url(url, headers)
        # print(response)
        # 选择标签,这里返回的是一个可迭代对象
        data_set = sl_num(response)
        # 遍历可迭代对象
        for i in data_set:
            # 写入数据
            waite_data(i)


二.利用powerBI清洗数据

  • 清洗前的数据

2004年10月18日,[‘0’, ‘7’, ‘0’],[‘4,143,184元’],[‘组三’],1 8 8
2004年10月19日,[‘5’, ‘5’, ‘7’],[‘3,026,718元’],[‘组三’],3 5 6
2004年10月20日,[‘9’, ‘8’, ‘6’],[‘3,280,608元’],[‘组六’],8 8 3
2004年10月21日,[‘7’, ‘9’, ‘1’],[‘3,447,146元’],[‘组六’],3 6 9
2004年10月22日,[‘9’, ‘4’, ‘1’],[‘3,510,020元’],[‘组六’],7 8 0
2004年10月23日,[‘6’, ‘1’, ‘1’],[‘3,297,440元’],[‘组三’],5 9 7
2004年10月24日,[‘1’, ‘4’, ‘4’],[‘3,071,100元’],[‘组三’],4 8 9
2004年10月25日,[‘4’, ‘7’, ‘1’],[‘3,255,474元’],[‘组六’],5 7 3
2004年10月26日,[‘5’, ‘0’, ‘5’],[‘3,355,906元’],[‘组三’],7 8 3
2004年10月27日,[‘8’, ‘2’, ‘8’],[‘3,627,176元’],[‘组三’],3 4 1
2004年10月28日,[‘6’, ‘0’, ‘7’],[‘3,713,534元’],[‘组六’],0 0 0
2004年10月29日,[‘8’, ‘7’, ‘8’],[‘3,986,350元’],[‘组三’],4 9 8
2004年10月30日,[‘4’, ‘7’, ‘7’],[‘3,859,626元’],[‘组三’],0 7 4
2004年10月31日,[‘4’, ‘7’, ‘6’],[‘4,027,212元’],[‘组六’],6 2 2
2004年11月1日 ,[‘4’, ‘3’, ‘9’],[‘4,256,120元’],[‘组六’],5 9 3
2004年11月2日 ,[‘6’, ‘7’, ‘9’],[‘4,319,854元’],[‘组六’],3 2 9

  • 清洗后的数据
时间 teset_100 test_10 test_1 group gewei shiwei baiwei
2004/10/18 0:00 1 8 8 3 0 7 0
2004/10/19 0:00 3 5 6 3 7 5 5
2004/10/20 0:00 8 8 3 6 6 8 9
2004/10/21 0:00 3 6 9 6 1 9 7
2004/10/22 0:00 7 8 0 6 1 4 9
2004/10/23 0:00 5 9 7 3 1 1 6
2004/10/24 0:00 4 8 9 3 4 4 1
2004/10/25 0:00 5 7 3 6 1 7 4
2004/10/26 0:00 7 8 3 3 5 0 5
2004/10/27 0:00 3 4 1 3 8 2 8
2004/10/28 0:00 0 0 0 6 7 0 6
2004/10/29 0:00 4 9 8 3 8 7 8
2004/10/30 0:00 0 7 4 3 7 7 4
2004/10/31 0:00 6 2 2 6 6 7 4
2004/11/1 0:00 5 9 3 6 9 3 4
2004/11/2 0:00 3 2 9 6 9 7 6
2004/11/3 0:00 6 6 7 3 8 8 6
2004/11/4 0:00 5 7 0 3 7 7 1
2004/11/5 0:00 2 8 8 6 4 6 2
2004/11/6 0:00 5 7 1 6 7 9 5
2004/11/7 0:00 8 3 2 6 0 7 2

数据分析过程不做解析,主要是爬取逻辑和思路

你可能感兴趣的:(数据分析,python,爬虫)