当看到天边飞鸟,你会说:“落霞与孤鹜齐飞,秋水共长天一色。”而不是:“卧靠,好多鸟。”;
当你失恋时你低吟浅唱道:“人生若只如初见,何事秋风悲画扇。”而不是千万遍地悲喊:“蓝瘦,香菇!”
今天回家早,陪俩小爷在楼下遛弯,忽然听见一阵马达轰鸣声,嗖~~闪一辆跑车,大大问;“爸爸,这是什么车啊?”我:“红色的车…”小小说:“爸爸肯定不认识,我也知道是红色的车。”气氛有些冷场…
网站将车系按照字母从A-Z进行了排序,然后点击每个车标进入详细信息,那Audi做例子:
那么今天的爬虫练习呼之欲出,获取车标网下所有的汽车品牌及车标,并入库保存…
决战高考,帮你秒变成语之王中,有对DBUtils的详细介绍,这里就不再赘述了…
但本次有一个知识点,我们需要将车标图片,存储在数据库中,那么如何在数据库中存储图片,使用类型BLOB。举一个简单的数据库图片读写例子
#-*-coding:utf-8-*-#@Author:王翔#@JianShu:清风Python#@Date:2019/7/2223:00#@Software:PyCharm#@version:Python3.7.3#@File:show.pyimportsqlite3db=sqlite3.connect('Car.db')cur=db.cursor()cur.execute("CREATETABLEifnotexistsimage_save(imageBLOB);")withopen('Audi.jpg','rb')asf:cur.execute("insertintoimage_savevalues()",(sqlite3.Binary(f.read()),))db.commit()cur.execute('selectimagefromimage_savelimit1')b=cur.fetchone()[0]withopen('1.jpg','wb')asf:f.write(b)我们创建一个image_save的测试表,然后将图片读取为二进制字节的方式,通过sqlite3.Binary将二进制文件存储至数据库。
那么同样的,我们将BLOB类型的图片读取出来后,进行写入,即可达到效果,来看看这个1.jpg是否正常:
看过了二进制的存储方式,大家肯定说明白了,网站获取到图片链接然后找着上面的例子下载到本地,然后再进行二进制的读取后存储数据库即可,对吗?不对…有什么问题呢?来看一个例子:
这里Audi图片的链接地址,我们通过requests来下载看看….
适配url
针对A-Z的车标排序,网站的url匹配关系很简单:
可以看到在包含cb-list方法的ul下匹配所有li中的第一个a标签,然后拼接base_url即可。
进入品牌详情界面后,我们针对左右栏目的设置,分别获取所需标红的内容
通过上面的分析,我们开始爬虫,但这个网站真的是相应好慢,没办法添加上Threading的多线程执行吧,整体代码如下:
由于图片是BLOB类型的二进制文件,所以大家看到的是星星,感觉网站的车标是不不够,怎么才140多种(虽然我能认识的不到20种…)