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中的信息,需要多多练习。

posted @ 2017-08-10 08:54  站在远方望童年  阅读(1054)  评论(0)    收藏  举报