爬取那种月饼最受欢迎,生成词云一目了然

 提交中秋节主题征文比赛:

今年的中秋又要到啦,诚邀亲爱的博主参与投稿,分享“程序员”视角下的中秋夜之美!

内容可以是:

  • 程序员过中秋的正确方式:团圆、赏月、还是惨兮兮地加班?
  • 互联网大厂的中秋仪式感:壕无人性!
  • 炫出我的中秋节礼盒:红包、奖金、还是空气月饼?
  • 我的中秋节祝福程序源代码分享:过什么节,代码走起!
  • 如何用代码制作水墨风格的中秋佳节网页?
  • 如何用代码绘制月饼?
  • 用代码分析月饼节的那些事儿:什么月饼口味卖的最好?
  • 打造我的专属中秋节小程序:我的浪漫不是梦~~
  • ······

主题不限哦,仅供参考 ~~你有什么想要分享的呢,快开启你的创作吧!

程序员过中秋节的正确方式,不是吃月饼,而是写程序给人推荐吃那种月饼馅,那么推荐那种馅呢?

我们用selenuim库爬取百度上各个月饼馅提到的次数也就是结果数,进行排序,用wordcloud制作词云html在用selenuim打开。

我们如果用request求,会被百度安全认证拦住,所以我们用selenium中的webdriver打开。网址怎么写哪?由于浏览器中的中文是用"%20"这种方法表示的,如何用这种方法表示文本呢?urllib.parse中的quote就可以做到这一点。爬取到了网站,如何找到结果数呢?我们不需要复杂的find_element语句,只需要用index查找结果数串的起始位和结束位就可以了。

话不多说,我们直接上代码:

#!usr/bin/python
# -- coding: utf-8 --
from selenium import webdriver
import urllib.parse as parse
import pyecharts.options as opts  # as别名
from pyecharts.charts import WordCloud

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27"
}


def num(key):
    """
    计算月饼馅百度中的结果数(流量)
    :param key: 月饼馅名称
    :return: 结果数
    """
    opt = webdriver.EdgeOptions()
    # 构建配置信息--通过浏览器选项对象调用配置方法
    opt.headless = True  # 设置浏览器为无头模式
    # 将配置信息加入到浏览器启动--实例化浏览器驱动对象添加属性option值
    drive = webdriver.Chrome(options=opt)  # 创建webdriver对象
    item = parse.quote('月饼馅 '+key, encoding='UTF-8')  # 浏览器将文本转换成的值
    drive.get(f"https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd={item}&fenlei=256&oq=selenium&rsv_pq=89577ef500004d0f&rsv_t=0336xYCmrRhmQnBqFs1sMgCPQn9ybdr50Jvo%2FfarMO%2BNbf3wHJYACPFoe64&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=23393&rsv_sug3=46&rsv_sug1=54&rsv_sug7=100&rsv_sug2=0&rsv_sug4=23778")  # 百度搜索
    i = drive.page_source.index("百度为您找到相关结果约")  # 起始位置
    i2 = drive.page_source.index("0个")  # 结束位置
    return drive.page_source[i + 11:i2].replace(",", "")  # 返回结果数


cakes = ['芝麻', '草莓', '黑麻', '椰丝', '抹茶', '板栗', '枣泥', '莲蓉', '核桃仁', '蛋黄', '椒盐', '椰奶', '豆沙', '黑芝麻', '白果', '细沙', '五仁', '蔓越莓', '莲', '乳酪莲蓉', '西梅', '柚子', '哈密瓜', '椰子', '杏仁', '玫瑰', '白莲', '云腿月饼', '梅干菜', '莲藕', '山楂', '水果', '绿茶', '苔菜', '冰皮', '鲜肉', '瓜子', '流心奶黄', '百果', '冬蓉', '肉松', '栗蓉', '叉烧', '苏式月饼', '碳烧咖啡', '火腿', '冰糖', '凤梨', '哈密杏', '椒盐蛋黄']  # 月饼馅名称
data = []
for c in cakes:
    try:
        data.append([c, num(c)])
    except ValueError:
        pass


(
    WordCloud()
    .add(series_name="月饼馅排行(提出次数排行)", data_pair=data, word_size_range=[6, 66])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="月饼馅排行", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
    .render("wordcloud.html")
)  # 创建wordcloud对象
driver = webdriver.Chrome()
driver.get("file:///C://Users//LENOVO//Desktop//wordcloud.html")  # 打开wordcloud(词云)html。

运行结果:

爬取那种月饼最受欢迎,生成词云一目了然_第1张图片

 这篇文章到此结束了,根据查找,我们发现月饼馅排名前三名是山楂、蛋黄和水果。

如果您觉得这篇文章写的好,请点赞收藏,蟹蟹大家!

你可能感兴趣的:(月饼,python)