需求
爬取星巴克产品以及图片,星巴克菜单
网页分析: 首先,需要分析星巴克官方网站的结构,了解菜单栏的位置、布局以及菜单项的标签或类名等信息。发送 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' )
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"]' )
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' )
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) )
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) )
爬取结果