• bs4比lxml更好?爬取彩票预测并通过bs4解析


    需求分析

    昨天,我做了一个爬取雪糕价格的程序,有一个小伙伴看了以后,就问我说,“仙草哥哥,你怎么总是使用lxml解析数据呢?我认为beautifulsoup4更好用一些!“

    我很奇怪啊,为什么这位小伙伴一定认为beautifulsoup4要比lxml更好用呢?我就问他说,“你为什么更喜欢beautifulsoup4呢?”

    这位小伙伴说,“因为beautifulsoup4可以使用css选择器啊,我经常开发web页面,对css选择器非常熟悉,所以我愿意使用css选择器,仙草哥哥,你能不能出一期使用bs4解析数据的文章呢?”

    哦,原来是这位小伙伴喜欢使用css选择器,那确实,如果要用css选择器,还是应该选择bs4,虽然它们的功能和达到的效果都是一样的,但是毕竟是哪个习惯就用哪个嘛,我觉得这无可厚非,那么本期我们就不使用lxml了,满足小伙伴的愿望,使用一次bs4

    至于今天的目标呢,是一个彩票分析预测的栏目,大概就是通过分析往期的彩票号码,来决定新一期什么彩票可能容易中奖的内容。当然啦,买彩票是有风险的,请在自己的能力范围支持,千万别冲动哟

    实现分析

    页面呢就是普普通通的页面,没什么特别值得注意的,就像这样

     我们只需要爬取上边的推荐就可以了,我们重点还是来说说beautifulsoup4怎么使用,这个beautifulsoup4呢,俗称“美丽汤”,和我们常用的lxml一样,也是一个页面解析的库,需要通过安装使用

    不过一般来说呢,就算你要使用bs4,也还是需要安装lxml的,为什么呢?因为我们需要在bs4中,加载lxml的解析引擎,就像这样

    1. # 通过lxml的引擎,加载bs4
    2. soup = BeautifulSoup(r.text, "lxml")

    为什么要这样做呢?bs4也准备了内置的解析方式,直接通过其提供的内置的解析方式使用,不就好了吗,为什么还要额外安装lxml使用呢?这个啊,就是一直以来有一种说法,通过lxml的引擎加载会比较快,使用默认的引擎速度不行,效率低,所以首选还使用lxml。当然我自己是没有验证过这种说法是否可靠的,但是别人都是这么说的,应该不会是骗人的吧,所以我们就直接用lxml

    然后剩下的问题就是,在bs4中如何使用css选择器了,通过select()方法,加上css选择器就可以了

    a = soup.select(".class_name a") # 通过select使用css选择器

    当然我们知道在bs4中还有find(),以及find_all()这些方法,也同样可以使用xpath解析。这样分析下来的话,bs4的功能确实不比lxml少,也是非常重要的解析库了

    不过嘛,我们的任务是提取数据,通过什么方式提取到的数据并没有那么重要。因此无论是lxml还是bs4,只要你用着习惯,无论使用哪一种都是可以的

    完整代码展示

    1. import requests
    2. import re
    3. import time
    4. from base64 import b64decode
    5. from bs4 import BeautifulSoup
    6. base_url = b64decode("aHR0cDovL20ueWlxaWNhaS5jb20=").decode()
    7. url = b64decode("aHR0cDovL20ueWlxaWNhaS5jb20vZGx0L3ljLw==").decode()
    8. headers = {"user-agent": "Mozilla/5.0"}
    9. r = requests.get(url, headers=headers)
    10. soup = BeautifulSoup(r.text, "lxml")
    11. a_list = soup.select(".cm-news-list a")
    12. for a in a_list:
    13. print(a.get_text())
    14. r = requests.get(base_url + a["href"])
    15. s = BeautifulSoup(r.text, "lxml")
    16. p_list = s.select(".article-desc p")
    17. for p in p_list:
    18. print(p.get_text())
    19. print()
    20. time.sleep(1)

    运行效果如下所示


    谁不希望一下子能赚很多钱呢?但是买彩票可能并不算是一个很好的方式哦!所以,请千万不要沉迷于此。我也只是做了这样一个爬虫程序,并非鼓励大家都去购买彩票,还是我之前说的那样,如果你真的喜欢碰碰运气的话,还请量力而行哦!

  • 相关阅读:
    Python中的super函数,你熟吗?
    Elasticsearch近实时架构
    SIP会话发起协议 - 先知道是什么(一)
    SpringMvc增删改查
    解决开发板有IP无法上网
    5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因
    面试题:Redis和MySQL的事务区别是什么?
    【大话云原生】煮饺子与docker、kubernetes之间的关系
    flex布局中的align-content属性
    腾讯云轻量服务器地域选择教程,2024最新地域选择攻略
  • 原文地址:https://blog.csdn.net/sagegrass/article/details/125544414