爬取薄荷健康网的食物分类,食物名称,食物热量,食物链接

import requests

from bs4 import BeautifulSoup

import csv

data=[]#建立空列表

#总结URL规律:常见食物分类有十个大类,每个大类下有十页菜单

for i in range(1,11):#设置大类取值范围

    for n in range(1,11):#设置菜单取值范围

        #设置url

        url='https://www.boohee.com/food/group/{}?page={}'.format(i,n)

        #每个URL的请求头相同

        headers={

            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',

            'Cookie':'acw_tc=0a5510c216404957518707856e485b09255a6ea4bb231f15cf45ed2cbaf32a; Hm_lvt_7263598dfd4db0dc29539a51f116b23a=1639284592,1639894206,1639919094,1640495752; Hm_lpvt_7263598dfd4db0dc29539a51f116b23a=1640496180'

        }

        res=requests.get(url=url,headers=headers)#请求URL

        bs=BeautifulSoup(res.text,'html.parser')#解析URL,别忘了text

        #提取大类时选择列表上方的大类,可与URL形成对应

        category=bs.find('div',class_='widget-food-list pull-right').find('h3').text.strip()

        #先寻找能代表总表的tag,再寻求往下细分

        tag_zong=bs.find('ul',class_='food-list').find_all('li',class_='item clearfix')#ul代表总表,所有事物信息分布在li中

        for tag in tag_zong:

            name=tag.find('div',class_='text-box pull-left').find('h4').find('a')['title']#提取食物名称

            calorie=tag.find('div',class_='text-box pull-left').find('p').text[3:]#提取热量值,通过切片去掉多余信息

            link='https://www.boohee.com'+tag.find('div','img-box pull-left').find('a')['href']#提取链接

            #建立字典

            dict={

                '食物分类':category,

                '食物名称':name,

                '食物热量':calorie,

                '食物链接':link

            }

            print(dict)

            data.append(dict)#添加列表

#存储数据

with open('薄荷健康.csv','w',encoding='utf-8',newline='') as w:

    header=['食物分类','食物名称','食物热量','食物链接']

    writer=csv.DictWriter(w,fieldnames=header)

    writer.writeheader()

    writer.writerows(data)

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值