应用Python爬虫技术获取福彩历史数据

大鸟哥平时研究彩票随机数据,肯定需要有历史数据作为支撑,那么如何获取历史数据呢?这里就应用了Python的爬虫技术,可以从一些允许的网站爬取历年来的双色球、3D等各种彩票的开奖信息,然后转化成为想要的表格形式存入Excel表格中。

下面就分享一下大鸟哥获取历年福彩3D 数据的程序代码:

# -*-coding:utf-8-*-
import requests
from bs4 import BeautifulSoup
import csv
import time
import os

# csv文件名
CSV_FILE_NAME = "cjcp.csv"
# csv标题
CSV_TITLE = ["期号", "试机号", "奖号"]


def main():
    print("采集开始")
    save_datas([CSV_TITLE])
    for year in range(2021, 2022):
        lst_year_datas = []
        start_qi = "%d001" % year
        end_qi = "%d999" % year
        url = "https://zst.cjcp.com.cn/cjw3d/view/3d_danxuan.html"
        param = {"startqi": start_qi, "endqi": end_qi, "searchType": "9"}
        soup = get_soup(url, param)
        tbody = soup.find("tbody", id="pagedata")
        if tbody:
            lst_tr = tbody.find_all("tr")
            if lst_tr:
                for tr in lst_tr:
                    lst_td = tr.find_all("td")
                    if not lst_td or len(lst_td) < 4:
                        continue
                    lst_data = [td.get_text(strip=True) for td in lst_td[1:4]]
                    print(lst_data)
                    lst_year_datas.append(lst_data)
        save_datas(lst_year_datas)


def get_soup(url, param):
    """
    进行网络请求
    :param url:
    :param param:
    :return: 返回响应文本bs4对象
    """
    if not url:
        return
    try:
        # 停顿5秒
        time.sleep(5)
        # 发起Get请求页面
        response = requests.post(url, data=param, timeout=10, headers={
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "Content-Type": "application/x-www-form-urlencoded",
            "Host": "zst.cjcp.com.cn",
            "Origin": "https://zst.cjcp.com.cn",
            "Referer": "https://zst.cjcp.com.cn/cjw3d/view/3d_danxuan.html",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
        })
        if response.status_code != 200:
            return
            # raise Exception("网络异常,正在重新请求")
        # 设置编码格式
        response.encoding = "gbk"
        # 获取页面源代码
        text = response.text
        return BeautifulSoup(text, "html.parser")
    except Exception as e:
        # 出现异常,可能是网络中断或出现反爬,休息2秒再重新继续这一页
        print(e)
        return get_soup(url, param)


def save_datas(lst_data):
    """
    保存数据
    :param lst_data:
    :return:
    """
    if not lst_data:
        return
    # lst_data是一个二维列表
    with open(CSV_FILE_NAME, "a", encoding="utf-8-sig", newline="") as file:
        csv_writer = csv.writer(file)
        csv_writer.writerows(lst_data)


# 程序入口
if __name__ == '__main__':
    main()

上面的代码需要你有一定的Python爬虫知识才能理解,否则,一两句话不可能让你明白,在这里不做详细讲解了,感兴趣的小伙伴可以私信联系大鸟哥,大鸟哥也做数据分析和咨询,当然也可以找大鸟哥来直接购买彩票数据和独家研究攻略。有基础的小伙伴可以直接把代码复制过去改改就能用,希望这篇小文章对你有帮助,好用的话别忘了回来帮大鸟哥转发、关注和点赞。心情好的话可以给大鸟哥打赏哦!

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