前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3结合BeautifulSoup和requests爬取双色球开奖结果

python3结合BeautifulSoup和requests爬取双色球开奖结果

作者头像
游离于山间之上的Java爱好者
发布2022-08-09 15:21:10
6960
发布2022-08-09 15:21:10
举报
文章被收录于专栏:你我杂志刊

首先进入中彩网http://www.zhcw.com/

点击 双色球 链接。如下图:

再次点击 往期回顾 链接。如下图:

而后将鼠标移入表格处,右击选择查看框架源码。如下图:

查看其框架源码可知,其获取的url为:http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html

好了,那接下笔者就是使用requests去请求url,而后使用BeautifulSoup去解析html。前提是已安装了BeautifulSoup库哦!完整代码如下:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
import time

'''
通过url以get方式请求获取响应数据
'''
def getHTML(url):

    try:
        res=requests.get(url)
        return res.content.decode(res.apparent_encoding,'ignore')
    except Exception as e:
        pass

'''
获取页面总数
'''
def getPages(html):

    soup = BeautifulSoup(html, 'html.parser')
    nums = int(soup.findAll('p')[1].find('strong').get_text())
    return nums

'''
解析页面数据,获取目标数据
'''
def parseData(html):
    soup = BeautifulSoup(html, 'html.parser')
    trs = soup.findAll('tr')[2:-1]
    leng = len(trs)
    res = []
    for i in range(leng):
        res0 = []
        tds = trs[i].findAll('td')
        pFir = tds[4].get_text().replace(" ", "").split("\n")
        res0.append(tds[0].get_text())
        res0.append(tds[1].get_text())
        res0.append(str(tds[2].get_text()).replace("\n", "  "))
        res0.append(tds[3].get_text())
        res0.append(pFir[0])
        res0.append(pFir[1])
        res0.append(tds[5].get_text())
        res0.append(tds[6].findAll('a')[0]['href'])
        res0.append(tds[6].findAll('a')[1]['href'])
        res.append(res0)
    return res

'''
通过页索引获取页面地址
'''
def getUrl(n):
    return 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_' + str(n) + '.html'

def main():
    url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html'
    html = getHTML(url)
    # 获取总页数
    pageNo = getPages(html)
    fileName = u'双色球.txt'.encode('UTF-8')
    # 依次处理每一页数据
    for _ in range(1, 2):
        print("正在爬取第%d页数据..." % _)
        url = getUrl(_)
        html = getHTML(url)
        # 解析数据
        data = parseData(html)
        with open(fileName, 'w') as fp:
            for item in data:
                fp.write('%s\n'
                      %(item))
        print("第%d页数据爬取完成!" % _)
        time.sleep(3)
    print("爬取完成!")

if __name__ == '__main__':
    main()

格式后续再处理吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 你我杂志刊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档