Python爬取【下厨房】网页菜名、所需材料和菜名所对应详情页的的URL实例

Target:菜名、所需材料、和菜名所对应的详情页URL。
思路一:我们先去爬取所有的最小父级标签

,然后针对每一个父级标签,想办法提取里面的菜名、URL、食材。
思路二:我们分别提取所有的菜名、所有的URL、所有的食材。然后让菜名、URL、食材给一一对应起来(这并不复杂,第0个菜名,对应第0个URL,对应第0组食材,按顺序走即可)。

思路一:

import requests
# 引用requests库
from bs4 import BeautifulSoup
# 引用BeautifulSoup库

url = 'http://www.xiachufang.com/explore/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
res_foods = requests.get(url,headers=headers)
# 获取数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')
# 解析数据
list_foods = bs_foods.find_all('div',class_='info pure-u')
# 查找最小父级标签

list_all = []
# 创建一个空列表,用于存储信息

for food in list_foods:
    tag_a = food.find('a')
    # 提取第0个父级标签中的<a>标签
    name = tag_a.text[17:-13]
    # 菜名,使用[17:-13]切掉了多余的信息
    URL = 'http://www.xiachufang.com'+tag_a['href']
    # 获取URL
    tag_p = food.find('p',class_='ing ellipsis')
    # 提取第0个父级标签中的<p>标签
    ingredients = tag_p.text[1:-1]
    # 食材,使用[1:-1]切掉了多余的信息
    list_all.append([name,URL,ingredients])
    # 将菜名、URL、食材,封装为列表,添加进list_all

print(list_all)
# 打印

思路二:

import requests
# 引用requests库
from bs4 import BeautifulSoup
# 引用BeautifulSoup库

url = 'http://www.xiachufang.com/explore/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
res_foods = requests.get(url,headers=headers)
# 获取数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')
# 解析数据

tag_name = bs_foods.find_all('p',class_='name')
# 查找包含菜名和URL的<p>标签
tag_ingredients = bs_foods.find_all('p',class_='ing ellipsis')
# 查找包含食材的<p>标签
list_all = []
# 创建一个空列表,用于存储信息

for x in range(len(tag_name)):
# 启动一个循环,次数等于菜名的数量
    list_food = [tag_name[x].text[18:-14],tag_name[x].find('a')['href'],tag_ingredients[x].text[1:-1]]
    # 提取信息,封装为列表。注意此处[18:-14]切片和之前不同,是因为此处使用的是<p>标签,而之前是<a>
    list_all.append(list_food)
    # 将信息添加进list_all
print(list_all)
# 打印

**【注意】**用python自己的编译器打印会出错:UnicodeEncodeError: ‘UCS-2’ codec can’t encode characters in position 1273-1273: Non-BMP character not supported in Tk
**【解决方法】**用pycharm或spyder运行

输出结果如下:

[['一口就爱上的麻酱宽粉,真的会上瘾哦!', 'http://www.xiachufang.com/recipe/104738875/', '宽粉、蒜末、辣椒粉、小米辣、葱花、芝麻、生抽、醋、蚝油、芝麻酱、食盐、糖、香菜'], ['家常焖豆腐', 'http://www.xiachufang.com/recipe/104747405/', '嫩豆腐、鸡蛋、青椒辣椒、葱花、蒜米、洋葱、生抽、蚝油、白糖、盐油、鸡精、淀粉'], ['外酥里糯,学会再也不用排队了❗️一学就会‼️', 'http://www.xiachufang.com/recipe/104626550/', '糯米粉、糖、鸡蛋、纯牛奶、玉米油'], ['好吃到爆的奶黄酥', 'http://www.xiachufang.com/recipe/104734616/', '奶黄馅:、蛋黄、糖、牛奶、食用油、普通面粉、油皮:、普通面粉、白砂糖、食用油、水、油酥:、普通面粉、食用油、装饰:、蛋黄、芝麻'], ['秒杀路边摊‼️巨好吃的爆炒花甲‼️辣炒花蛤', 'http://www.xiachufang.com/recipe/104739872/', '花甲/花蛤、小葱 、姜、蒜、小米辣'], ['好吃到舔手指的孜然火腿年糕', 'http://www.xiachufang.com/recipe/104742122/', '年糕、火腿、熟白芝麻、辣椒粉、孜然粉、生抽、白糖'], ['巨好吃㊙️酸辣凉拌面❗️十分钟搞定,简单快手❗️', 'http://www.xiachufang.com/recipe/104347814/', '面条、葱花、蒜末、黄瓜、香菜末、熟花生米'], ['烤牛奶(超详细)', 'http://www.xiachufang.com/recipe/104726529/', '牛奶、蛋黄、玉米淀粉、芝士片、糖、鸡蛋、白砂糖'], ['蔓越莓小布丁', 'http://www.xiachufang.com/recipe/104734322/', '牛奶、淡奶油、白砂糖、奶粉、玉米淀粉、蔓越莓干'], ['可以出去摆摊的酸辣无骨鸡爪', 'http://www.xiachufang.com/recipe/104712985/', '鸡爪'], ['低卡好吃不胖的番茄虾仁意面‼️茄汁浓郁巨美味', 'http://www.xiachufang.com/recipe/104738616/', '意大利面、虾仁、西红柿、洋葱'], ['祛湿(四神汤)', 'http://www.xiachufang.com/recipe/104744154/', '芡实(薏米)、茯苓、莲子、山药干、鸡(猪骨)、红枣'], ['比辣皮好吃百倍的孜然豆腐皮,麻辣过瘾!', 'http://www.xiachufang.com/recipe/104735326/', '豆腐皮、花椒粉、孜然粉、辣椒面、白芝麻、盐、白糖、生抽、蚝油'], ['不放一滴水的红烧肉🔥入口即化,肥而不腻❗', 'http://www.xiachufang.com/recipe/104724562/', '五花肉、大葱、姜、花椒、八角、香叶、干辣椒、黄酒、冰糖'], ['🔥一次成功的布雪蛋糕❗️1个鸡蛋就能完成✅', 'http://www.xiachufang.com/recipe/104741511/', '鸡蛋、细砂糖、低筋面粉、柠檬汁、卡士达酱'], ['免油炸,巨好吃!外酥内软的奥利奥吉事果', 'http://www.xiachufang.com/recipe/104744754/', '黄油、低筋面粉、细砂糖、清水、奥利奥饼干、鸡蛋'], ['经典的家常菜,青椒炒肉丝,简单的食材也能做出如此美味', 'http://www.xiachufang.com/recipe/104743764/', '青椒、里脊肉、蒜、姜片、葱、海天蚝油、料酒或黄酒、海天草菇老抽、一品鲜酱油、淀粉、蛋清、水、鸡粉、白糖、香醋'], ['低脂减肥菜:素炒豆角丝!超下饭', 'http://www.xiachufang.com/recipe/104741148/', '豆角、蒜末、生抽、老抽、蚝油、食盐'], ['脆皮日本豆腐', 'http://www.xiachufang.com/recipe/104736126/', '日本豆腐、青红椒,洋葱、大蒜头、白糖、盐、生抽、生粉、番茄酱'], ['妙可蓝多奶酪棒', 'http://www.xiachufang.com/recipe/104697708/', '芝士片、纯牛奶、吉利丁片                 、糖'], ['家庭聚会被赞爆的~麻辣香锅 今天这道菜太给撑场面了', 'http://www.xiachufang.com/recipe/104494503/', '虾 鸡翅 肥牛卷、香肠或午餐肉、土豆 藕 莴笋玉米、西兰花 油菜 香菜 、金针菇 木耳 香菇、鱼丸 蟹棒 牛肉丸、腐竹 年糕 宽粉、葱 姜 蒜、干辣椒 花椒、盐 鸡精 、麻辣香锅调料或者火锅底料'], ['凉拌海带丝', 'http://www.xiachufang.com/recipe/104736493/', '海带丝、油泼辣子、白芝麻、花椒、蒜、花椒油、生抽、鸡精、糖、盐、香油、陈醋、白糖、小葱、香菜、小米辣'], ['酱爆豆角丝~比肉还好吃的家常菜', 'http://www.xiachufang.com/recipe/104721840/', '宽豆角、蒜瓣、辣椒、生抽、蚝油、黄豆酱'], ['豆角做的窝窝头太好吃了', 'http://www.xiachufang.com/recipe/104734402/', '、、、、普通面粉'], ['午睡熊蛋包饭', 'http://www.xiachufang.com/recipe/104738850/', '米饭、鸡蛋、豌豆,玉米、火腿,胡萝卜、鲜味酱油']]

Note:
1、爬虫中添加字典类型的请求头headers,这样做的目的是为了将python伪装成一个真实的浏览器,进而促使被访问网站(或者称服务器)将python当作一个正常的访问用户;
2、当用for或者while循环,循环去请求网站的信息时,在爬虫的循环中用time.sleep()随机停顿几秒,这样做的目的是为了减轻被访问网站的流量压力,否则单机在一秒内访问对方十几次甚至上百次,会消耗对方很多资源。python爬虫笔记——可爬与不可爬

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
爬取下厨房菜谱,可以使用 Python 中的 requests 和 Beautiful Soup 库。具体步骤如下: 1. 使用 requests 库向下厨房的菜谱搜索页面发送请求,获取 HTML 页面内容。 2. 使用 Beautiful Soup 库解析 HTML 页面,获取菜谱列表。 3. 遍历菜谱列表,获取每道菜谱的详细页面链接。 4. 使用 requests 库向每道菜谱的详细页面链接发送请求,获取 HTML 页面内容。 5. 使用 Beautiful Soup 库解析 HTML 页面,获取菜谱的详细信息,例如食材、做法等。 下面是一个简单的 Python 爬取下厨房菜谱的示例代码: ```python import requests from bs4 import BeautifulSoup # 发送请求,获取搜索页面的 HTML 内容 url = 'https://www.xiachufang.com/search/?keyword=红烧肉' response = requests.get(url) html = response.text # 解析 HTML 页面,获取菜谱列表 soup = BeautifulSoup(html, 'html.parser') recipe_list = soup.find_all('div', class_='recipe') for recipe in recipe_list: # 获取菜谱的详细页面链接 recipe_link = recipe.find('a')['href'] # 发送请求,获取详细页面的 HTML 内容 recipe_response = requests.get(recipe_link) recipe_html = recipe_response.text # 解析 HTML 页面,获取菜谱的详细信息 recipe_soup = BeautifulSoup(recipe_html, 'html.parser') recipe_name = recipe_soup.find('h1', class_='page-title').text.strip() recipe_ingredients = recipe_soup.find('div', class_='ings').text.strip() recipe_steps = recipe_soup.find('div', class_='steps').text.strip() # 打印菜谱的详细信息 print(recipe_name) print(recipe_ingredients) print(recipe_steps) ``` 注意,爬取网站内容时需要遵守网站的爬虫协议,不要过度频繁地发送请求,以免对网站造成影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值