Python个性化面向对象分类爬虫
2019-03-31 本文已影响20人
我爱学python
摘要:有意想整个图片采集站,有了这个想法接下来就是实践了,空间域名啥的都买了,今天写的这个是采集美图网站的
环境:Windows
工具:PyCharm
版本:Python3.6
模块:requests、lxml、pymysql、time
我们会在首页、列表页、分类页、内容页多次用到requests.get()方法,所以简单的封装一下
![](https://img.haomeiwen.com/i13717038/9fc7b30ec13225d1.png)
is_xpath用来区分直接返回网页源码还是返回经过处理的直接用xpath匹配的。
因为多个地方要把数据入库所以封装个数据插入的方法:
![](https://img.haomeiwen.com/i13717038/4c7fd4ea43981b49.png)
More来区分是插入一条还是插入多条。
因为分类很多,每个分类下的页数也很多,所以打算分开来抓,那么我们就按输入的分类和页数来执行爬虫
![](https://img.haomeiwen.com/i13717038/e1bc6edc97d69e7b.png)
在spider类中,定义了choicCate()方法,此方法就是让用户开输入分类和页数的,只做了对分类错误的处理,其中10代表了现在的10个分类,
在这里我没有去做错误次数的限制,想加的可以加上。下面是choicCate()方法:
![](https://img.haomeiwen.com/i13717038/01c8ce5efcbf291b.png)
run()就是我们的主函数了,根据用户输入的分类和页数执行爬虫
![](https://img.haomeiwen.com/i13717038/61b3b095feb7a9f2.png)
getInfo()方法获取分类下所有的缩略图和名称和内容页链接,获取到后存入mysql,根据内容页链接继续获取所有内容页的的图片
![](https://img.haomeiwen.com/i13717038/3395b8857b27b086.png)
getInfoImages()方法就是来获取内容页详情图并存入mysql的
![](https://img.haomeiwen.com/i13717038/aac62b3c23095fe4.png)
因为在分类页没有显示tags标签,只有在内容详情页才有,所有还需要更新下之前的表,updateSQL()就是这个功能,下面我们看看执行的效果吧,效果如下:
![](https://img.haomeiwen.com/i13717038/de09faf131fafbb6.png)
![](https://img.haomeiwen.com/i13717038/8c6904c1b80c20ff.png)