欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

思路——根据网站链接爬取整个图片网站

程序员文章站 2022-04-16 09:11:15
八月入职新公司,发现公司的爬虫系统主要用Java实现的偶尔用一些python,为此又看了下Java爬虫,顺便用之前同事推荐我的美女图片网站练手(之前推荐时候python爬虫勉强算经验丰富,感觉难度太低没去爬,这次刚好拿来练手),附上网址http://www.mm131.com/,(对了,这个网站爬取 ......

    八月入职新公司,发现公司的爬虫系统主要用java实现的偶尔用一些python,为此又看了下java爬虫,顺便用之前同事推荐我的美女图片网站练手(之前推荐时候python爬虫勉强算经验丰富,感觉难度太低没去爬,这次刚好拿来练手),附上网址,(对了,这个网站爬取要注意在请求头中加上refer的参数,不然你会发现爬到的是百度和腾讯的图标),在踩了几个java的坑后完成了页面的爬取,但感觉接下来都是老套路,无非是按网站几大分类循环爬取进行页面网址拼接之类的,就想省事减少页面分析工作,想了下可行度极高,因为网站的分类和图片链接的域名都是一样的,可以以此为过滤条件。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------思路如下:

         根据该网站相关链接爬取整个图片网站可行,主要有两点要注意:

          (1)url链接的存储和消重; 

解决方法:用布隆过滤器或直接用列表(list)进行存储和去重,每次将爬取完毕的url存储到列表(或布隆过滤器),并写入到文件中进行记录,在停止后重新爬取时直接将文件内的链接读取到列表(或布隆过滤器)中即可,为了减小内存消耗,就不记录图片的链接,图片链接可根据我们设定的图片命名方式直接利用os模块的os.path.isfile(filepath)或os.path.exisits(filepath)检查该图片链接是否在对应路径已存在该名称的图片。

          (2)图片的分类和存储

解决方法:直接根据图片和人物分级创建文件夹存储图片,如mingxing(明星),chemo(车模),qipao(旗袍)。。

链接示例:

 

爬取:1. 直接利用python的scrapy框架进行分布式爬取;

           2. (推荐推荐)自己写个,用python的urllib或requests(推荐)模块,再用上yield(生成器),简单实现分布式盘爬取,效率更高;

           3. 用java的httpclient(功能强,更广泛)或jsoup(使用简单)。

 

ps:今天大致就这样了,今天浪的太厉害,没啥时间写代码了(懒),,,浪荡的周日啊。。。