likes
comments
collection
share

我用爬虫写了一个小程序

作者站长头像
站长
· 阅读数 19

一天我在微信小程序上面发现有很多表情包或者壁纸一类的小程序,我就在想我可不可以做一个类似的小程序呢?

想法

最开始的时候想法比较简单,就是写一个接口然后上传表情包或者壁纸(到处是下载,哈哈哈)。

然后根据分类以及标题进行搜索已达到其效果;但是让我没想不到的是上传了上千张图片以后发现内存占用太多了。(主要是舍不得买内存,用的是机械内存),这让我很是苦恼直到有一天我发现一个网站的域名和图片地址不一致。

开始学习爬虫

域名和图片地址不一致很有可能就是该图片不是此网站的。

当我了解到这儿的时候,我觉得发现了新大陆一样,开始学习怎么用node去爬取数据,最开始学习的时候就是通过解析页面html拿到相关的一些数据即可,然后有一天我发现一个更简单的方式:

找到数据的接口(可能是隐藏的)直接请求该接口即可获取数据;一般个人网站的话基本上都不会隐藏接口,只有很大的公司这种可能才会这样做吧!不过个人网站大部分是做了md5加密;这种如果在不知道秘钥的情况下也是比较难搞的(就只能去爬页面),这也是个人网站用的最多的。

大家想要去学习爬虫,可以多去一些网站上看看;分析分析怎么爬虫。

不管是接口还是html;很多网站为了防止别人爬数据,会在标签类名上做文章(就是很多类名是一致的),这样就是为给爬数据增加难度。

抖图表情包GIF

在做抖图表情包GIF的时候,问我想到了两种方式。

1、先将数据爬取下来保存到数据库,爬取的数据一般有:图片名称、图片分类、图片链接等,当用户需要的时候就直接在我的数据库搜索使用即可,只是说图片链接还是其他网站的(主要是图片太大了,不想下载)

2、这种就是用户在请求数据的时候,我马上去拉取第三方网站(也就是用户需要的图片数据,去第三方网站拉取),然后返回给用户;相当于做了一个转发。这样的话我数据库都省了。

目前我使用的方法就是第二种,毕竟没啥人用。所以无关紧要啦!

但是我推荐还是第一种,因为第一种的效率更高以及不容易被风控;第二种是建立在同一个ip的情况下,不断的拉取;人少还好;多了就容易被网站检测到(同一个ip多次访问,会被误认为你在攻击网站)。

推荐方法:

大家可以用electron加上sqlite3搭建一个爬虫软件,然后将数据保存在本地数据库;隔一段时间就去拉取一次(更新数据);然后将本地数据库把你网站的数据库替换一下,这样就更新了。

如果可以的话,也是可以将图片下载下来,然后将其保存到你自己的网站进行访问,不过这种的话就需要你在保存sqlite3的时候处理好图片的访问链接

如果大家不知道怎么爬虫的话,可以访问该文章用node爬到了表情包,超级简单

如果大家感兴趣可以看看该小程序

我用爬虫写了一个小程序

总结

  • 同学们在爬虫的时候,一定要严谨一些,比较一个死循环可能就会将网站搞死机(很多个人网站都比较小)
  • 爬取到的数据仅供学习观赏使用,切勿拿来牟利

往期文章