这是一个严肃又欢乐的七月,哲学界迎来新拷问。
传统古典哲学的代表,是门口的保安大叔,他提出了三个经典问题:“你是谁?你从哪儿来?要到哪儿去?”
而后现代主义哲学的四位代表人物冒了出来,发出直指人内心的提问。
食堂大妈:你要饭吗?
配钥匙师傅:你配吗?
算命先生:你算什么东西?
滴滴司机:你搞清楚自己的定位没有?
从本月起,魔都正式步入生活垃圾强制分类的时代。个人一旦违规混合投放垃圾,将被处以最高200元的罚款。新兴哲学代表垃圾分类阿姨正式上岗:你是什么垃圾?
垃圾分类就这样拉开了2019后半年人类与环境的第一场大战。
为了我们赖以生存的地球,垃圾分类确实是刻不容缓的事。但是花花绿绿的垃圾,除了养猪,还有没有可能利用人工智能和数据科学的方法,进行更好的垃圾分类呢?
答案是肯定的!
今天就来分享爬虫助教的实战项目:用python生成垃圾分类器,1秒识别“你是什么垃圾”,完全避免了自己和家人为了不知道要扔哪个垃圾箱而烦恼。
一、项目思路
这问题的解决思路或许不止一条,我们来看看助教是怎么思考的:
第一步,先评估整个功能,认为可以利用Python爬取网页来实现:找出哪个网页能达到这垃圾分类,对网页进行分析,再把里面的信息提取出来。
为了确保垃圾分类器信息来源的准确性,首先要明确自己所做的垃圾分类器是依据哪个垃圾分类网,经过选择,助教选择了这https://lajifenleiapp.com/sk/这个网站。
第二步,通过搜索发现每次搜索网页url的变化规律。
第三步,分析网页源码,将网页源码中的关键内容进行提取。
二、环境
操作系统:MacOSX
编辑器:PyCham
Python版本:3.7.4
相关模块:requests,bs4
python自带模块: urllib,tkinter
三、代码实现
一切准备就绪,我们开始工作。首先,导入所需要的相关模块。
import requests
from bs4 import BeautifulSoup
from urllib.request import quote
import tkinter
from tkinter import Tk,Button,Entry,Label,Text,END
接着,请求爬取网页。
def crawl(word):
# -------------加了requests headers
params = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept - Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,es-US;q=0.6,es;q=0.5',
'Connection': 'keep-alive',
'DNT': '1',
'Host': 'lajifenleiapp.com',
'Referer':'https://lajifenleiapp.com/',
'Upgrade - Insecure - Requests': '1',
'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',
}
将爬取得数据进行清洗筛选,从中选取自己需要的数据。
if a[0].text !='未查到完全匹配字段。':
b = res.find_all("li")
'''
for i in range(10):
print(i, '\n',a[i])
'''
# ------------严重错误!!!!!!!!!, IndexError: list index out of range, 从4,5,6,7,8改成了3,4,5,6,7
print(a[0].text,a[1].text,a[3].text,a[4].text,a[5].text,a[6].text,a[7].text)
return "相似物品:\n"+a[0].text.strip().replace("\n"," ").replace("相关查询:","")+"\n\n\n"+a[1].text+"\n\n"+a[3].text+"\n\n"+a[4].text+"\n\n"+a[5].text+"\n"+a[6].text+"\n"+a[7].text+"\n"+b[0].text+"\n\n"+b[1].text
else:
return word+"可不是什么垃圾,哼,请重新搜索"
最后,对垃圾分类器界面端的大小、颜色等进行设计。
win = tkinter.Tk()
win.title("垃圾分拣查询器")
win.geometry("400x400+200+50")
win.minsize(310,470)
win.maxsize(310,470)
result_text1 = Text(win,background = 'azure')
result_text1.place(x = 10,y = 5,width = 285,height = 70)
result_text1.bind("<Key-Return>","submit1")
title_label = Label(win, text=u'垃圾分类查询结果:')
title_label.place(x=10, y=100)
# 翻译结果
result_text = Text(win, background='light cyan')
result_text.place(x=10, y=120, width=285, height=325)
def submit1():
content = result_text1.get(0.0, END).strip().replace("\n", " ")
# 把这个值传送给服务器进行翻译
result = crawl(content)
result_text.delete(0.0, END)
result_text.insert(END, result)
def submit():
content = result_text1.get(0.0,END).strip().replace("\n"," ")
result = crawl(content)
result_text.delete(0.0, END)
result_text.insert(END, result)
def clean():
result_text1.delete(0.0,END)
result_text.delete(0.0,END)
submit_btn = Button(win, text=u'查询', command=submit)
submit_btn.place(x=205, y=80, width=35, height=25)
submit_btn2 = Button(win, text=u'清空', command=clean)
submit_btn2.place(x=250, y=80, width=35, height=25)
win.mainloop()
四、成果展示
一个垃圾分类识别器就这么生成了!
输入你任何具备疑惑的垃圾,1秒就能得到解答。
五、尾声
整个小功能并不难实现,只要学到Python小课的爬虫山脚第3关,掌握resquests库、beautifulsoup库的使用,以及quote函数与url的拼接,你也能将自己的idea变成现实。
简单的爬虫技术,其实还可以实现很多有趣的事情:
-
比如有人用来做股票分析;
-
有人想转行前端,爬过拉勾网里所有前端职位的招聘需求,然后从中分析出哪些框架要求的多,就专攻那些框架学习,再去去找工作;
-
有人用python轻松爬取千张表情包,再也不怕斗图了;
-
有人观影前爬取某电影的猫眼评论和评分,更准确地从眼花缭乱的评论中分析,大家对这电影打高分或低分的原因,还做成了关键词词云……
Python可以为我们的好奇心买单,通过合理设置爬虫和分析工具,我们的生活会远远比目前看到的更加精彩和多样化。
还没开启Python学习的你,不要再在犹豫中耗尽所有可能!
Python经验分享
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
Python学习路线
这里把Python常用的技术点做了整理,有各个领域的知识点汇总,可以按照上面的知识点找对应的学习资源。
学习软件
Python常用的开发软件,会给大家节省很多时间。
学习视频
编程学习一定要多多看视频,书籍和视频结合起来学习才能事半功倍。
100道练习题
实战案例
光学理论是没用的,学习编程切忌纸上谈兵,一定要动手实操,将自己学到的知识运用到实际当中。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。