• 【python爬虫】—星巴克产品


    需求

    爬取星巴克产品以及图片,星巴克菜单

    • 网页分析: 首先,需要分析星巴克官方网站的结构,了解菜单栏的位置、布局以及菜单项的标签或类名等信息。
    • 发送 HTTP 请求: 使用 Python 的 requests 模块发送 HTTP GET 请求,获取星巴克网页的 HTML 内容。
    • 解析 HTML: 使用一个 HTML 解析库(如 BeautifulSoup)解析网页的 HTML 内容,以便从中提取出菜单栏的数据。
    • 定位菜单栏元素: 使用解析库的选择器功能(如 CSS 选择器或 XPath)定位菜单栏所在的 HTML 元素。
    • 提取菜单数据: 从菜单栏元素中提取菜单项的信息,可能包括菜单项名称、图片等。
    • 数据存储: 将提取的菜单数据存储到适合的数据结构中。

    python爬虫

    • 获取网页源码,这里没有反爬手段,不需要添加其他参数
    import urllib
    from bs4 import BeautifulSoup
    import requests
    
    base_url = "https://www.starbucks.com.cn/menu/"
    response = urllib.request.urlopen(base_url)
    content = response.read().decode('utf-8')
    
    soup = BeautifulSoup(content, 'lxml')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 方法一:soup的select方法
    # 方法一:select方法
    import os
    
    # 文件保存路径
    save_path = "./practice_071_星巴克/"
    if not os.path.exists(save_path): os.makedirs(save_path)
    
    name_list = soup.select('ul[class="grid padded-3 product"]')
    # name_list[0].select('li div')[0]["style"]
    for name in name_list:
        submenu_pic  = name.select('li div')
        submenu_name = name.select('li strong')
        for pic_url,name in zip(submenu_pic, submenu_name):
            suffix = pic_url["style"].split('("')[-1].split('")')[0]
            # 文件地址 和 名称
            picture_url = 'https://www.starbucks.com.cn' + suffix
            picture_name = name.get_text() + ".jpg"
            
            # 文件不支持名称中含有字符 '/',' '
            picture_name = picture_name.strip().replace("/", 'or')
    
            # 方法1:urlretrieve
            # urllib.request.urlretrieve(url=picture_url, filename=os.path.join(save_path,picture_name))
    
            # 方法2:写入文件形式
            src_response = urllib.request.urlopen(picture_url)
            pic_content = src_response.read()
    
            with open(os.path.join(save_path,picture_name), 'wb') as fp:
                fp.write(pic_content)
    
            print("{}  完成,地址为  {}".format(picture_name, picture_url))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 方法二:soup的find\find_all方法
    # 方法二:find/find_all方法
    menu_list = soup.find('div', class_="wrapper fluid margin page-menu-list").find_all('li')
    
    for name in menu_list:
        suffix = name.find('div')["style"].split('("')[-1].split('")')[0]
        # 文件地址 和 名称
        picture_url = 'https://www.starbucks.com.cn' + suffix
        picture_name = name.find("strong").get_text() + ".jpg"
    
        # 文件不支持名称中含有字符 '/',' '
        picture_name = picture_name.strip().replace("/", 'or')
    
        urllib.request.urlretrieve(url=picture_url, filename=os.path.join(save_path,picture_name))
    
        print("{}  完成,地址为  {}".format(picture_name, picture_url))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    爬取结果

    在这里插入图片描述

  • 相关阅读:
    SpringBoot终极讲义第一章笔记
    动手学深度学习:2.线性回归pytorch实现
    物联网开发笔记(16)- 使用Wokwi仿真micropython on ESP32开发板实现跑马灯(4个LED)
    记录Bug:VScode中无法识别万能头文件#include<bits/stdc++.h>
    docker-compose快速部署elasticsearch-8.x集群+kibana
    基于HTML+CSS+JavaScript仿瓜子二手车官网【学生网页设计作业源码】
    redis键的过期删除策略
    数商云SCM系统供应商全生命周期管理,助力建筑材料企业快速定位合适供应商
    docker作业
    文本变成文本路径图 保存txt
  • 原文地址:https://blog.csdn.net/qq_38734327/article/details/132926531