使用 Python 爬取大乐透中奖号码
XiaoMa 博士生

准备工作

安装所需要的库

执行 win+R,输入 cmd,调出命令行,执行以下程序。

1
2
3
4
5
6
7
8
pip install requests
pip install BeautifulSoup
pip install pandas

---
#可通过 help 命令查看该库的使用方法
import requests
help(requests)

爬取网站

【超级大乐透历史数据】_超级大乐透历史数据_体彩大乐透历史数据-500彩票网

该网站源代码并非是通过页面跳转来查找不同数据,通过 F12 查找 network 栏找到真正储存所有历史开奖结果的网页:http://datachart.500.com/dlt/history/newinc/history.php?start=07001&end=230202

爬取步骤

  1. 源代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # 这三个是第三方库,需安装后才能使用
    from bs4 import BeautifulSoup
    import requests
    import pandas as pd
    # 下面三个是 python 标准库
    import os
    import csv
    import codecs

    lst = []
    url = 'http://datachart.500.com/dlt/history/newinc/history.php?start=07001&end=230202'
    r = requests.get(url)
    r.encoding = 'urf-8'
    text = r.text
    soup = BeautifulSoup(text, "html.parser")
    tbody = soup.find('tbody', id = "tdata")
    tr = tbody.find_all('tr')
    td = tr[0].find_all('td')

    for page in range(0, 100):
    td = tr[page].find_all('td')

    lst.append([td[0].text, td[1].text, td[2].text, td[3].text, td[4].text, td[5].text, td[6].text, td[7].text])
    with open("Lottery_data_2.csv", 'w', encoding='utf-8') as csvfile: # 如果不写 encoding,下面的汉字会显示乱码
    writer = csv.writer(csvfile)
    writer.writerow(['期号', '号码 1', '号码 2', '号码 3', '号码 4', '号码 5', '号码 6', '号码 7'])
    writer.writerows(lst)
    csvfile.close()
  2. 运行成功后,会在该目录下生成一个 csv 文件,点击查看。

    image-20230228113624675

  3. csv 转 Excel 有很多种方法,最直接的可以找在线网站转一下:CSV 转换为 Excel - 在线表格转换工具

    image-20230228113924457

参考

  1. python爬取分析超级大乐透历史开奖数据 - 知乎 (zhihu.com)