实战|*敏*感*词*教你用Python爬虫(附详细源码)
优采云 发布时间: 2021-05-27 02:20
实战|*敏*感*词*教你用Python爬虫(附详细源码)
这是一个发生了巨大变化的中国,人们和食品的运输比以往任何时候都快。最近,为了寻找中国,J弟兄穿过了一个五线城市的街道,但除了疲惫之外什么都没发现。
因此,J先生默默地打开了主要美食网站,例如豆类和水果美食,去了厨房,美食界等等。选择之后,我们最终抓取了发布的总共3,032种中国菜食谱,然后清理了数据并进行了可视化分析,试图走上美食博主的广阔道路。
数据采集
斗国食品网的数据抓取相对简单。如果您对爬虫感兴趣,则可以查看J兄弟的过去原创 文章“实践战斗|教您使用Python爬虫(带有详细的源代码)”,观点一致。
本文中检索的数据涵盖了八种中餐,包括四川菜,粤菜,湖南菜,并包括菜谱名称,链接,材料,等级和图片等字段。由于篇幅所限,只给出了核心代码。
# 主函数
def main(x):
url = 'https://www.douguo.com/caipu/{}/0/{}'.format(caipu,x*20)
print(url)
html = get_page(url)
parse_page(html,caipu)
if __name__ == '__main__':
caipu_list = ['川菜', '湘菜','粤菜','东北菜','鲁菜','浙菜','湖北菜','清真菜'] #中国菜系
start = time.time() # 计时
for caipu in caipu_list:
for i in range(22):
# 爬取多页
main(x=i)
time.sleep(random.uniform(1, 2))
print(caipu,"第" + str(i+1) + "页提取完成")
end = time.time()
print('共用时',round((end - start) / 60, 2), '分钟')
数据清理
在短短几分钟内,就抓取了3032条配方信息。为了便于进行可视化分析,有必要简单地清理已爬网的数据。
本文中的数据清理主要使用Python的Pandas库。如果您对Pandas感兴趣,则可以查看J兄弟先前的原创专辑“ Pandas Basic Series”,共有5篇文章。
导入数据
使用pd.read方法导入已爬网的配方数据并添加列名。
import pandas as pd
import numpy as np
df = pd.read_csv('/Users/spider_cook/cai.csv'
,names = ['菜谱','菜谱链接', '用料', '评分', '用户','图片','菜系'])
df.head()
删除重复项
少量的配方数据在爬网过程中反复爬网,需要使用drop_duplicates方法删除。
df = df.drop_duplicates()
缺少值处理
通过info方法发现少量记录收录缺失值,并使用dropna方法将其删除。
df.info()
df = df.dropna(axis=0, how='any')
计分场地清洁
已爬网的分数字段收录冗余字符串,并且属于对象类型。需要将多余的字符串替换并转换为数字类型,以方便后续计算。
df['评分'] = df['评分'].str.replace('分','').astype('float') #替换"分"为空,转换为浮点型
添加材料字段
为了便于分析配方中使用的成分,有必要根据成分字段计算每个配方中使用的成分量。由于材料字段之间用逗号分隔,因此可以通过计算逗号数间接获得它。
df['用料'] = df['用料'].str.replace(',',',')
df['用料数'] = df['用料'].str.count(',') + 1
预览数据
df.head()
数据可视化
本文中的数据可视化主要使用pyecharts库,该库可以轻松实现炫酷的图表效果。如果您对可视化感兴趣,可以查看J兄弟先前的原创 文章“数据可视化分析系列”,其中涉及房地产,电子商务,招聘和其他领域。
食谱得分分布
<p>from pyecharts import options as opts
from pyecharts.charts import Page, Pie
cut = lambda x : '4分以下' if x < 4 else ('4.1-4.5分' if x