python爬取彩票排列三开奖结果

import gzip
import re
from urllib import request

import xlwt
from bs4 import BeautifulSoup


# 参数说明:
#   period: 开奖期数
#   redo_num: 重试次数,默认是0,每错误一次回调时会+1,默认就好
#   max:最大重试次数,默认5
def get_pls(period, redo_num=0, redo_max=5) -> dict:
    try:
        url = 'http://kaijiang.500.com/shtml/pls/%05d.shtml' % period
        req = request.Request(url)

        # 设置一下头,不设置返回结果不正确
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                                     'Chrome/79.0.3945.117 Safari/537.36')
        req.add_header('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')
        req.add_header('Accept-Encoding', 'gzip')
        req.add_header('Accept-Language', 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7')
        req.add_header('Cache-Control', 'max-age=0')
        req.add_header('Host', 'kaijiang.500.com')
        req.add_header('Referer', 'http://kaijiang.500.com/shtml/pls/04001.shtml')
        req.add_header('Upgrade-Insecure-Requests', 1)
        req.add_header('Cookie',
                       'ck_regchanel=baidu; regfrom=0%7Cala%7Cbaidu; sdc_session=1579657460948; ')

        # 发送请求并读取结果
        html_content = request.urlopen(req).read()
        # 由于编码格式是gzip,所以需要进行解压
        html_content = gzip.decompress(html_content)
        # 解压后是一个bytes流,需要转换为字符串进行html解析
        html_content = html_content.decode('utf-8', errors='ignore')
        # 解析为soup构建的html对象
        soup = BeautifulSoup(html_content, 'html.parser')
        # 获取原始开奖号码(先定位到标签)
        pls_rst = soup.find_all('li', attrs={'class': 'ball_orange'})
        # 获取原始开奖期数
        qi_shu = soup.find_all('font', attrs={'class': 'cfont2'})
        # 获取原始开奖日期 - 截止兑奖日期
        pls_date = soup.find('span', attrs={"class": "span_right"})

        # 解析期数
        qi_shu = qi_shu[0].get_text() if qi_shu else period

        # 解析日期
        match_obj = re.findall(r'\d+', pls_date.get_text())
        # 开奖日期 解析不到取空
        start_date = match_obj[0] if match_obj else ''
        # 截止兑奖日期 解析不到取空
        end_date = match_obj[1] if match_obj else ''

        # 解析开奖号码
        # 第 1 位
        pls_1 = pls_rst[0].get_text()
        # 第 2 位
        pls_2 = pls_rst[1].get_text()
        # 第 3 位
        pls_3 = pls_rst[2].get_text()

        return {'period': qi_shu, 'num_1': pls_1, 'num_2': pls_2, 'num_3': pls_3, 'all': pls_1 + pls_2 + pls_3,
                'open_date': start_date, 'end_date': end_date}
    except OSError:
        # 达到最大请求次数,还是无法解压,则返回空
        if redo_num > redo_max:
            return {'period': qi_shu, 'num_1': '', 'num_2': '', 'num_3': '', 'all': '',
                    'open_date': '', 'end_date': ''}
        # 请求可能返回的结果不符合gzip格式所以这里做一下处理,不符合格式重新请求,一直到符合格式
        return get_pls(period, redo_num + 1)


'''
python 获取彩票【排列三】指定【期数区间】的的开奖号,并保存为Excel
需要用到的库: 
    BeautifulSoup:html解析从dom中获取需要的数据
    xlwt:Excel操作
    
    urllib.request:发送HTTP请求并接收结果
    re:正则表达式,提取字符串中的有效数据
    gzip:解压gzip格式的压缩数据
一次不要爬太多期哦,不然会很慢
'''
if __name__ == '__main__':
    l = []
    # 开始爬取的期数
    start = 4001
    # end = 20021
    # 结束爬取的期数
    end = 4020
    for q in range(start, end):
        rs = get_pls(q)
        l.append(rs)

    book = xlwt.Workbook()

    sheet = book.add_sheet('排列三')
    for index, head in enumerate(['期数', '第1位', '第2位', '第3位', '全部', '开奖日期', '兑奖截止日期']):
        sheet.write(0, index, head)

    row = 1
    for r in l:
        col = 0
        for key, value in r.items():
            sheet.write(row, col, value)
            col += 1
        row += 1

    book.save('排列三.xls')

欢迎关注公众号一起成长

### 回答1: 微博作为全球最大的中文社交媒体平台之一,每天都会发布大量的文字信息,其中包括无数的用户评论。利用Python爬虫技术,我们可以快速地获取整理这些评论信息,进而生成一份详细的生词云图,从而方便用户针对不同的关键词进行分析和学习。 首先,我们需要使用Python库中的beautifulsoup4和requests来爬取微博评论数据。这些库可以帮助我们快速地获取到经过封装的HTML代码,从而抓取所需数据。接着,我们可以使用jieba和wordcloud两个Python库以及一些其他的数据处理和可视化工具,来对抓取的评论进行处理,生成云图。 具体来说,我们需要通过编写Python代码,实现以下几个主要步骤: 第一步,我们需要获取微博评论数据。使用requests库可以访问目标网页获取到所有页面的HTML代码。如果该网页需要登录,我们可以使用selenium实现自动化登录。 第二步,我们需要处理评论数据。首先利用beautifulsoup4解析获取到的HTML代码,提取出我们所需的评论数据。接着使用jieba将评论进行分词,统计每个词语的出现频率,结果以字典形式保存。 第三步,我们需要生成云图。使用wordcloud库来生成词云,可以快速方便的将处理后的数据可视化展现。可以自定义云图的样式和主题,根据需要调整字体、颜色等参数。 最后,我们可以将云图保存为图片或PPT等格式,使用其他数据处理和分析工具来进一步分析抓取到的微博评论数据,以及对所涉及的关键词进行学习和研究。 ### 回答2: Python语言可以帮助我们实现自动化爬取社交媒体上的数据,比如微博评论。我们可以通过Python的第三方库BeautifulSoup、requests等,将微博评论的HTML代码解析出来,将其中的文本数据提取出来。接着,我们可以用jieba分词库对微博评论中的文本进行分词,将其转化为一组词语,方便后续的统计分析。 在分词之后,我们可以用Python的第三方库WordCloud将这些词语进行可视化。WordCloud库能够实现词云的制作,词云是将大量的单词云朵状的排列在一起,形成类似云的形状的一种图案。在词云中,单词的大小和出现的频率成正比,频率越高的单词会出现在词云的中心位置,而频率较低的单词则会出现在词云的边缘位置。 制作微博评论生词云的步骤,大致包括以下几步:爬取微博评论,用jieba分词将文本转化为一组词语,统计每个词语出现的频率,然后用WordCloud库对词频进行可视化,生成生动形象的词云图。 除此以外,Python还可以结合其他第三方库和工具,对生成的词云图进行更深入的操控,比如设置词云的形状、颜色、字体等等,使得结果更加个性化且符合需求。 ### 回答3Python是一种程序语言,其强大的网络爬虫库使得它成为研究微博评论的理想工具。使用Python爬取微博评论的过程包括三个主要步骤:登录微博,抓取评论数据和生成词云。 首先,登录微博是必不可少的,因为只有登录成功才能访问评论的数据。这可以通过使用selenium等库自动模拟用户登录进行实现。完成登录后,我们可以获取所需的微博ID和评论页面URL。 第二步是抓取评论数据。我们可以使用Python库如beautifulsoup和requests等,访问评论页面,提取所需评论数据保存到本地文件或数据库中。我们还要确保我们抓取到足够量的数据,以便于后续处理。 最后,我们需要将评论数据转化为词云。Python中有一些非常强大的词云生成库,例如wordcloud和jieba库,可以帮助我们将大量文本数据转化为美观的词云。我们可以按照自己的设计风格来生成词云,如调整文字颜色,字号和布局等。 综上所述,使用Python爬取微博评论生成词云的过程相对较为简单,但其中要注意一些具体的细节和技巧,例如如何处理中文文本、如何提取评论数据等。需要掌握一定的措施来处理这些问题,根据需要进行优化,以达到最好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值