利用Java低速爬取妹子图
本帖最后由 叽叽叽 于 2019-12-26 21:49 编辑此功能是在@chen180 大佬的基础上进行的
首先感谢大佬的指点,下面是该大佬的帖子
https://www.52pojie.cn/forum.php?mod=viewthread&tid=856079&extra=page%3D2%26filter%3Dtypeid%26typeid%3D192
该功能主要使用了Jsoup包
不过代码写得很烂,因为,刚学习到Java爬虫之类的,所以拿取大佬的项目来练手
接下来是低速问题了
由于本人是新手,在构思代码的时候呢,考虑过多线程爬取,不过有关多线程部分写得很烂罢了,因为很慢:dizzy:
因为呢,现在是用三线程去抓取的,用四线程会导致很多图片需要重新下载,都是403的原因,如果有时间的哥们可以慢慢挂着{:1_906:}
准确来说我感觉整体的代码都是写得很差{:1_885:}
如果有大神能够指点一下就好了
下面是遇到技术性问题时,所解决问题的网站,十分感谢这些大佬的帖子
https://blog.csdn.net/dangerous_fire/article/details/63251212
https://www.jianshu.com/p/c38ddd4259c4
https://www.jianshu.com/p/8f5287bea0f5
对了,如果遇到路径问题的话,可以修改路径,或者创建一下先前路径
希望各位客官不要嫌弃
忘记说了,这个是爬取整个妹子图的
由于本人有洁癖,因此都是分类好的
如果可以的话,来github上围观一下嘛~
https://github.com/aliuselly/java-for-Mzitu
虽然很垃圾{:1_890:}
感谢@lilips 的建议!
由于当初没有摸清楚@lilips的意思,导致乱更新一下,仅以提升300毫秒的速度
不过,现在知道了,将速度变成了350毫秒,因此速度大大提升,不过呢,还是以三线程下载
因为,本人感觉这个样子比较可靠
还有,这次还加入了记录功能,因为,考虑到没有人会一次性下载完成(包括我自己)
因此,加入了配置文件,每次进行读取,然后记录好下载的页数
至于那些妹子图更新的问题(即,有新的图库出现),没有精力去弄了,因为本人还是渣渣
同时,如果弄起来,怀疑要重构(毕竟垃圾代码,扩展性极差。。。)
所以,就这样了
感觉对不起以前下载的网友们,发了一个半吊子作品上来(虽然说现在也还是)
真的还感谢看我帖子的网友们!
应@wangergou 的要求,现在弄下食用方式:
食用方法:
1,首先得保证您的电脑上有Java(去百度如何安装Java即可)
2,首先得保证您得网络是否可以访问上面的所爬取的网站(因为,有些网络无法访问,比如:某些校园网,所爬取网址:https://www.mzitu.com/)
3,在E盘下创建好 op\爬取文件夹(或者自己修改源码,自己自定义下载目录)
4,将jsoup.jar包解压(百度jsoup即可,也可在此下载:https://jsoup.org/),同时也将最后一次了.7z给解压了(下面提供下载),将这两解压出来的东西放到同一文件夹下,比如E:\op下(等下我就上传已经编译的版本,即.class文件,直接运行即可,不过也需要Java,不过应该不用下载Jsoup.jar包了吧,毕竟猜想,没试过。。。理论可行吧)
5,打开CMD(win键+R调出运行框,输入CMD即可),切换到您刚才所解压的文件夹下(例如E:\op),进行编译Mz.java(javac Mz.java),然后运行Mz.class(java Mz)。(如果用已经编译的包,解压出来的都为.class文件,不用编译步骤了,直接运行即可)
6,睡个午觉,等待爬取的结束,或者按下Ctrl+C键结束,等下次再次进行爬取(有记录功能)
由于网站升级,导致了429问题
现在已经弄好,但是,爬取速度比原来还要低下
想要效率的同学,可以到这位大佬这里:https://www.52pojie.cn/thread-1068214-1-1.html
感谢支持! wrgwrg 发表于 2019-9-19 13:48
图源地址抓取过程异常!!!
java.io.FileNotFoundException: E:\op\爬取\229\address.txt (系统找不到指定的 ...
你好,感谢发现问题的所在,一开始还以为是网页换了,结果是原来有两种妹子图的网站,我跑去另一边了,很尬尴,问题呢,就是一开始,没事创建好文件的原因,导致写入失败,你可以在WriteURL.java文件中if(!file.exists())中的第一行,即bufw = new BufferedWriter(new FileWriter(file)); 这句的上面加上,parent.mkdirs();这句话,即可,感谢{:1_907:} 刚用python练习完这个网,它的反爬关键就是要header要有referer,这个可以直接写它首页。
还有一个是下载间隔,0.3秒以上会比较安排安全。你那4线程估计就是超过这个时限所以有403 获取图源连接过程出现了异常!
与图源地址连接失败!
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=429, URL=https://www.mzitu.com/198256
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:760)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:705)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:295)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:284)
at picture2.DownloadImage.getConnect(DownloadImage.java:122)
at picture2.DownloadImage.download(DownloadImage.java:52)
at picture2.DownloadImage.run(DownloadImage.java:33)
at java.lang.Thread.run(Thread.java:748)
这个咋整 敢问这是爬取哪里的妹子图啊? 约艾鲁 发表于 2019-9-8 20:57
敢问这是爬取哪里的妹子图啊?
https://www.mzitu.com/
是这个的妹子图,别见怪啊{:1_900:} 为啥不爬小哥哥呢 对了,如果想一编译就成功的话,最好先在E盘下创建op\爬取,或者修改源代码{:1_890:} linfengtai2008 发表于 2019-9-8 21:04
为啥不爬小哥哥呢
有啥网站好介绍一下么{:1_886:} 长不大De叔叔 发表于 2019-9-8 21:23
爬的这个目标站下载来有水印吧?
没错,因为,在网页上的图片是有水印的,这个功能做的紧紧是爬网页上所展示的图片而已{:1_885:} 看不懂 咋用? 以前也想学java后来面向对象直接劝退,不过感觉java爬虫应该挺心累的吧,然后没有路径可以找找有没有判断路径是否存在的函数,然后再创建,加油楼主