济南建网站,seo课程哪个好,163企业邮箱登陆入口,WordPress 付费文章插件文章目录 需求爬取星巴克产品以及图片#xff0c;星巴克菜单 python爬虫爬取结果 需求
爬取星巴克产品以及图片#xff0c;星巴克菜单
网页分析#xff1a; 首先#xff0c;需要分析星巴克官方网站的结构#xff0c;了解菜单栏的位置、布局以及菜单项的标签或类名等信息… 文章目录 需求爬取星巴克产品以及图片星巴克菜单 python爬虫爬取结果 需求
爬取星巴克产品以及图片星巴克菜单
网页分析 首先需要分析星巴克官方网站的结构了解菜单栏的位置、布局以及菜单项的标签或类名等信息。发送 HTTP 请求 使用 Python 的 requests 模块发送 HTTP GET 请求获取星巴克网页的 HTML 内容。解析 HTML 使用一个 HTML 解析库如 BeautifulSoup解析网页的 HTML 内容以便从中提取出菜单栏的数据。定位菜单栏元素 使用解析库的选择器功能如 CSS 选择器或 XPath定位菜单栏所在的 HTML 元素。提取菜单数据 从菜单栏元素中提取菜单项的信息可能包括菜单项名称、图片等。数据存储 将提取的菜单数据存储到适合的数据结构中。
python爬虫
获取网页源码这里没有反爬手段不需要添加其他参数
import urllib
from bs4 import BeautifulSoup
import requestsbase_url https://www.starbucks.com.cn/menu/
response urllib.request.urlopen(base_url)
content response.read().decode(utf-8)soup BeautifulSoup(content, lxml)方法一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[classgrid 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 suffixpicture_name name.get_text() .jpg# 文件不支持名称中含有字符 /, picture_name picture_name.strip().replace(/, or)# 方法1urlretrieve# urllib.request.urlretrieve(urlpicture_url, filenameos.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))
方法二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 suffixpicture_name name.find(strong).get_text() .jpg# 文件不支持名称中含有字符 /, picture_name picture_name.strip().replace(/, or)urllib.request.urlretrieve(urlpicture_url, filenameos.path.join(save_path,picture_name))print({} 完成地址为 {}.format(picture_name, picture_url))爬取结果