Python爬虫实例——菜单推荐
Python爬虫——获取菜单推荐
1.准备工作
一台已经装有python的desktop;
安装本次爬取所需要的库文件bs4、requests、random库。
2.考虑爬虫代码框架
(1)需要爬取菜单页面方法;
(2)需要打印获取内容方法;
(3)需要输入关键字的方法;
(4)需要爬取制作流程的方法。
3.爬取菜单页面
def getmenu(url):
try:
r = requests.get(url) //request方法获取整个食品网站的页面信息
r.raise_for_status() //异常状态反馈
r.encoding='utf-8' //转换菜单页面编码方式
m=r.text
menu=[]
html = BeautifulSoup(m,'html.parser') //BeautifulSoup库对于解析页面方面特别方便,这次实验也采用改库解析页面信息
for i in html.find_all('div',attrs={'class':'pic'}): //find_all 方法根据标签找到菜单存储的标签
menu.append(i.img.attrs['alt']) //获取菜名
for i in html.find_all('div',attrs={'class':'pic'}):
makeurl=i.a.attrs['href'] //获取制作方法所在的页面链接
return menu,makeurl //返回获取的信息
except:
print ('exception')
4.爬取制作流程的方法
def getmake(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding='utf-8'
m=r.text
make=[]
html = BeautifulSoup(m,'html.parser')
for i in html.find_all('div',attrs={'class':'cp-show-main-step-item'})://BeautifulSoup库方法find_all方法根据标签查找内容
make.append(i.div.string) //append就不赘述了,各种编程语言都有
return make
except:
print ('exception')
5.注意
(1)你可以也注意到了爬取页面的方法和爬取制作方法时,我都采用try-exception的形式,这是避免爬取过程中出现问题,能过及时反馈和查找原因,大家在编写爬虫的时候也尽量采用该方法。
(2)在获取内容的时候需要进行页面分析

根据标签查找相应的内容。
6.代码展示
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import sys
import random
reload(sys)
sys.setdefaultencoding( "utf-8" )
def getmenu(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding='utf-8'
m=r.text
menu=[]
html = BeautifulSoup(m,'html.parser')
for i in html.find_all('div',attrs={'class':'pic'}):
menu.append(i.img.attrs['alt'])
for i in html.find_all('div',attrs={'class':'pic'}):
makeurl=i.a.attrs['href']
return menu,makeurl
except:
print ('exception')
def getmake(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding='utf-8'
m=r.text
make=[]
html = BeautifulSoup(m,'html.parser')
for i in html.find_all('div',attrs={'class':'cp-show-main-step-item'}):
make.append(i.div.string)
return make
except:
print ('exception')
def printmenu(getpage):
m=random.randint(1,10)
if getpage[m] in getpage:
print (getpage[m])
def choosemenu():
choose= input('请输入你要获取的菜单推荐内容:')
flag= input('是否需要具体的做法:1,需要;2,不需要:\n')
return choose,flag
def main():
m=choosemenu()
choose=m[0]
flag=m[1]
url = "http://www.chinacaipu.com/index/search?keyword="+choose
getpage=getmenu(url)[0]
printmenu(getpage)
makeurl=getmenu(url)[1]
make=getmake(makeurl)
if flag == '1' :
print ("具体的做法如下所示:\n")
for i in make :
print i
main()
写在最后
这次只是简单的实现,更多的靠大家去自己去编写。
编写的过程中,最主要的是能够找到藏在页面HTML中的信息,需要多多练习。

浙公网安备 33010602011771号