如题
from gevent import monkey
monkey.patch_all
import gevent,requests,openpyxl,time
from gevent.queue import Queue
from bs4 import BeautifulSoup
start=time.time()
headers={
‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36’
}
url_master=[‘http://www.boohee.com/food/view_menu’]
url_list=[]
url_dict={}
for i in range(1,11):
u_i=‘http://www.boohee.com/food/group/’+str(i)
url_master.append(u_i)

for i in url_master:
url_slave=[]
for j in range(1,11):
url_slave.append(i+’?page=’+str(j))
url_list.append(i+’?page=’+str(j))
url_dict[i]=url_slave

value_list=[]
for value in url_dict.values():
value_list.append(value)

work=Queue()
for url in url_list:
work.put_nowait(url)

content=[]
def spider():
global value_list,zero,one,two,three,four,five,six,seven,eigth,nine,ten
while not work.empty():
url=work.get_nowait()
if url in value_list[0]:
zero=res(url)
elif url in value_list[1]:
one=res(url)
elif url in value_list[2]:
two=res(url)
elif url in value_list[3]:
three=res(url)
elif url in value_list[4]:
four=res(url)
elif url in value_list[5]:
five=res(url)
elif url in value_list[6]:
six=res(url)
elif url in value_list[7]:
seven=res(url)
elif url in value_list[8]:
eigth=res(url)
elif url in value_list[9]:
nine=res(url)
elif url in value_list[10]:
ten=res(url)

def res(url):
res=requests.get(url,headers=headers)
#print(url,res.status_code)
soup=BeautifulSoup(res.text,‘html.parser’)
a=soup.find_all(‘div’,class_=‘text-box pull-left’)
for i in a:
title=i.find(‘a’)[‘title’]
href=‘http://www.boohee.com’+i.find(‘a’)[‘href’]
calorie=i.find(‘p’).text
content.append([title,href,calorie])
return content

def write(sheet,list):
for i in list:
sheet.append(i)

task_list=[]
for x in range(5):
task=gevent.spawn(spider)
task_list.append(task)
gevent.joinall(task_list)

wb=openpyxl.Workbook()
name_list=[‘菜肴’,‘谷薯芋、杂豆、主食’,‘蛋类、肉类及制品’,‘奶类及制品’,‘蔬果和菌藻’,‘坚果、大豆及制品’,‘饮料’,‘食用油、油脂及制品’,‘调味品’,‘零食、点心、冷饮’,‘其他’]
sheet=wb.active
sheet.title=name_list[0]
for i in range(1,11):
wb.create_sheet(name_list[i])
for i in name_list:
sheet=wb[i]
sheet[‘A1’]=‘菜名’
sheet[‘B1’]=‘链接’
sheet[‘C1’]=‘卡路里’

content_list=[zero,one,two,three,four,five,six,seven,eigth,nine,ten]
for i in range(11):
write(wb[name_list[i]],content_list[i])

wb.save(‘boohee.xlsx’)
wb.close()

end=time.time()
print(end-start)

多协程抓取薄荷网食物热量 下篇相关推荐

  1. 一日一技:爬取薄荷网食物热量

    本文仅供学习参考. 薄荷健康秉承"为年轻家庭提供更健康.更美味的食品和饮料"的公司使命,为8000万用户提供个性化智能营养处方与一站式健康解决方案,致力于成为年轻家庭首选的健康生活 ...

  2. SpiderFlow平台v0.3.0初次使用并爬取薄荷网的热量和减法功效

    spider-flow 作为web爬虫他可以简单的说是新一代的爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫. 也就是说我们不用在刻意的为了一些数据就去学一下语言如python,我们只要画个 ...

  3. python卡路里程序_SpiderFlow平台v0.3.0初次使用并爬取薄荷网的热量和减法功效

    spider-flow 作为web爬虫他可以简单的说是新一代的爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫. 也就是说我们不用在刻意的为了一些数据就去学一下语言如python,我们只要画个 ...

  4. python从网址爬图片协程_python 用 gevent 协程抓取海量网页

    python作为爬虫利器,抓网页的方式简洁明了.爬成百上千的网页,都可以很快爬完,但是如果网页数量上万呢?速度就不能忍受了. 这是一段爬取页面的函数,用了requests库:1 2 3 4 5impo ...

  5. Python异步爬虫之协程抓取妹子图片(aiohttp、aiofiles)

    目录 前言 一.什么是协程? 二.协程的优势 三.代码分析 1.引入库 2.获取所有时间线的链接 3.获取一个时间线中所有相册的链接 4.获取一个相册中所有的图片链接以及相册的名字 5.下载并保存图片 ...

  6. 链家网开源java_异步协程爬取链家租房信息

    异步协程抓取链家数据+pandas写入csv import asyncio import aiohttp import pandas from bs4 import BeautifulSoup fro ...

  7. 练习---爬取薄荷网所有食物卡路里,并分类放入excel中

    首先薄荷网里有11种大的食物分类,每种大的食物分类里有10页,每页10个食物及热量记录.本来想把这一共110个url都放入queue队列中,然后爬取,但是这样会打乱食物的分类,所以就只把每个食物大类的 ...

  8. async 异步抓取 花瓣网高清大图 30s爬取500张

    废话 不多说,直接上代码,不懂得看注释 先安装  pip install aiohttp 1 "异步抓取花瓣网图片" 2 3 # pip install aiohttp 4 imp ...

  9. Python分别用单线程,多线程,异步协程爬取一部小说,最快仅需要5s

    文章目录 单线程爬取 多线程爬取 异步协程爬取 本文运用了三种方式爬取一整部小说,分别运用了单线程爬取,多线程爬取和异步协程爬取. 小说网址:` http://www.doupo321.com/dou ...

最新文章

  1. 两次杀人,自动驾驶技术之恶
  2. python基础学习1-计数器实例
  3. 学习笔记Hadoop(十五)—— MapReduce编程进阶
  4. 在服务器上远程使用tensorboard查看训练loss和准确率
  5. 计算机网络学习笔记(29. DNS概述)
  6. Mac电脑问题:磁盘读写NTFS怎么不行?
  7. 王道考研操作系统笔记(第三章)附:王道考研408所有PPT和思维导图
  8. 用Excel表格神速写代码
  9. Matlab 2016a 安装包及破解教程
  10. 计算机毕业设计Java演出票在线预定网站系统(源码+系统+mysql数据库+Lw文档)
  11. java io流练习题_Java IO流经典练习题
  12. (SDL2)SDL在ubuntu下的测试代码(雷霄骅)
  13. Python 写入文件
  14. 自由浮动时间与总浮动时间
  15. angular6添加子路由_如何将Ionicons添加到Angular 6应用
  16. 百炼JAVA-----实现家庭收支记账软件
  17. switch语句及其嵌套
  18. 2023年湖北一级技师二级技师报名时间、考试时间是什么时候?
  19. Harbor项目高手问答及赠书活动火热进行中
  20. php生成动态笔画字体,怎么制作手写文字的动画效果视频 文字一笔一划写出来的动画效果制作...

热门文章

  1. 安装谷歌浏览器——测试工具(Advanced REST client)
  2. 用Python统计票数
  3. MiniMax算法实现井字棋
  4. np.matmul()
  5. 大学里应该重点学习哪门技术语言
  6. SQL条件IF函数(MySql)
  7. python是什么?他的特点是什么?
  8. 下拉数据过多,超过3000条浏览器卡顿
  9. ZXV10 B700V5机顶盒支持的无线网卡主芯片
  10. C++和qt designer的混合编程--动态计算加法小工具