httpclient爬取性感美图
依赖httpclient4.2,Jsop
SemeiziCrawler.java
package kidbei.learn.crawler;import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List;import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /*** http://sejie.wanxun.org/post/2012-09-25/40039413449* @author Administrator**/ public class SemeiziCrawler {private static final String BASEHOST = "http://sejie.wanxun.org/";private static DefaultHttpClient client = ConnectionManager.getHttpClient();static String url = "http://sejie.wanxun.org/post/2012-09-25/40039413449";private static String IMGPATH = "D:\\sexpicture\\色戒美眉图"+File.separator+StringUtil.getDate();static int STARTPAGE = 1;static int PAGECOUNT = 100;public static void main(String[] args) {File f = new File(IMGPATH);if(!f.exists()){f.mkdirs();}String host = BASEHOST ;for(int i=STARTPAGE;i<PAGECOUNT;i++){if(i != 1){host = BASEHOST+"page/"+i;}System.out.println("进入第"+i+"页");String pageContext = getResultByUrl(host); // System.out.println(pageContext);List<String>articleURLS = getArticleURL(pageContext);for(String articleURL:articleURLS){String articleContext = getResultByUrl(articleURL);List<String> ImgURLS = getImgURLS(articleContext);for(String ImgURL:ImgURLS){savepic(ImgURL);}}} // String articleContext = getResultByUrl(url); // List<String> strs = getImgURLS(articleContext); // for(String str:strs){ // System.out.println(str); // } }/*** 根据url获取页面* @param url* @return*/public static String getResultByUrl(String url){System.out.println("打开网页"+url);HttpGet get = new HttpGet(url);HttpEntity entity = null;HttpResponse response = null;try {response = client.execute(get);entity = response.getEntity();if(entity != null){InputStream is = entity.getContent();StringWriter sw = new StringWriter();IOUtils.copy(is, sw, "UTF-8");is.close();sw.close();return sw.toString();}} catch (Exception e) {System.out.println("网页打开出错");return null;}finally{get.abort();try {EntityUtils.consume(entity);} catch (IOException e) {e.printStackTrace();}}return null;}/*** 找出当前页面中所有帖子的地址* @param pageStr 网页字符串* @return*/public static List<String> getArticleURL(String pageContext){if(pageContext == null){return null;}List<String> articleURLS = new ArrayList<String>();System.out.println("寻找帖子...........");try {Document doc = Jsoup.parseBodyFragment(pageContext);Elements es = doc.select("div.post"); es = es.select("div[class=post-item type-photo]");es = es.select("div.meta a:containsOwn(全文)");for(Element e:es){articleURLS.add(e.attr("href"));}} catch (Exception e) {e.printStackTrace();return null;}return articleURLS;}/*** 获取帖子的图片地址* @param articleURLS* @return*/public static List<String> getImgURLS(String articleContext){List<String>ImgURLS = new ArrayList<String>();if(articleContext == null){return null;}System.out.println("获取图片地址-----------");Document doc = Jsoup.parse(articleContext);Elements es = doc.select("a[target=_blank] img[src]");for(Iterator<Element> i=es.iterator();i.hasNext();){Element e = i.next();ImgURLS.add(e.attr("src"));}return ImgURLS;}/*** 保存图片* @param ImgURL*/public static void savepic(String ImgURL){if(ImgURL == null){return ;}HttpGet get = new HttpGet(ImgURL);String[] strs = ImgURL.split("/");String fileName = strs[strs.length-1];String savePath = IMGPATH+File.separator+fileName;HttpEntity entity = null;try {HttpResponse response = client.execute(get);entity = response.getEntity();System.out.println("保存图片>>>>.>>>>>>"+fileName);InputStream is = entity.getContent();OutputStream os = new FileOutputStream(savePath);IOUtils.copy(is, os);IOUtils.closeQuietly(os);IOUtils.closeQuietly(is);} catch (Exception e) {e.printStackTrace();System.out.println("图片保存失败");return ;}} }
StringUtil.java
package kidbei.learn.crawler;import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random;public class StringUtil {public static String getRandomString(){StringBuffer generateRandStr = new StringBuffer(); Random rand = new Random(); int length = 6; char ch;for(int i=0;i<length;i++) { int randNum = Math.abs(rand.nextInt())%26+97; // 产生97到122的随机数(a-z的键位值) ch = ( char ) randNum;generateRandStr.append( ch );} return generateRandStr.toString(); }public static String getSavePath(String IMGPATH,String fileName){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String date = sdf.format(new Date()).toString();if(!(fileName.endsWith(".jpg"))){fileName = fileName + ".jpg";}String randStr = StringUtil.getRandomString();return IMGPATH+File.separator+date+File.separator+randStr+fileName;}public static String getDate(){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");return sdf.format(new Date()).toString();} }
ConnectionManager.java
package kidbei.learn.crawler;import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.PoolingClientConnectionManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.HttpParams;public class ConnectionManager {static final int TIMEOUT = 20000;//连接超时时间static final int SO_TIMEOUT = 20000;//数据传输超时static String UA = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1" +" (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1";public static DefaultHttpClient getHttpClient(){SchemeRegistry schemeRegistry = new SchemeRegistry();schemeRegistry.register(new Scheme("http",80,PlainSocketFactory.getSocketFactory()));schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);cm.setMaxTotal(500);cm.setDefaultMaxPerRoute(200);HttpParams params = new BasicHttpParams();params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,TIMEOUT);params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT);params.setParameter(CoreProtocolPNames.USER_AGENT, UA);DefaultHttpClient client = new DefaultHttpClient(cm,params);return client;} }
本文转自:http://www.oschina.net/code/snippet_257479_14524#23843
转载于:https://www.cnblogs.com/dreammyle/p/4149687.html
httpclient爬取性感美图相关推荐
- Java爬虫代码示例|入门教程 1- 快速爬取百度美图
文章目录 前言 源码 参考 前言 说起搜索,大家一定对百度不陌生.每个搜索引擎后边都是一个大型爬虫调度系统. 第一篇我们先以百度为例 每天都被它爬,今天我们来爬一下它. 源码 url分析 https: ...
- 爬取一个美图网站的图片脚本
# -*- coding: utf-8 -*- """ Created on Thu Dec 9 23:31:12 2021@author: davis "&q ...
- 美图 html模板,httpclient爬取美图
httpclient批量爬取性感美图,完整源码. 资源下载此资源下载价格为2D币,请先登录 资源文件列表 GetGoodPic/.classpath , 1215 GetGoodPic/.mymeta ...
- 第一个爬虫项目-爬取唯美小姐姐网站
爬取唯美小姐姐网站 链接: 源代码文件下载地址 展示 源代码 import requests import re import os import time# 伪装 用于可以伪装成浏览器. heade ...
- Python爬取系列妹子图实战总结(程序员节福利哟)
Python爬取系列妹子图(福利哟~~~) 用到的模块:requests 和 lxml中的html 今天呢是10月24日,天气一如既往的好,也是传说中的程序员节,来爬波妹子图岂不美哉!!! 开始操作: ...
- 爬取唯美女生网站上所有小姐姐的照片
爬取唯美女生网站 前几天刚好看到有人在教学爬取唯美女生网站(https://www.vmgirls.com)的图片,大致听了一下,只是介绍了一次爬取某一个小姐姐的照片,因此就尝试做一个爬取全站小姐姐照 ...
- HttpClient 爬取百度图片
HttpClient 爬取百度图片 以前写的一篇爬取百度图片的博客是我第一次用Java接触爬虫的相关知识,当时使用的Java的原生类库,写的不是很好,特别是对于分页的处理(导致许多图片重复下载了)以及 ...
- python爬取图片源码_半次元图片爬取-python爬取半次元图片源码下载-西西软件下载...
python爬取半次元图片源码,由大神自制的python爬取工具,本源码针对半次元图片平台,可以爬取最新的网站图片资源,支持自定义保存目录,非常方便,需要requests库的支持,想要相关源码资源的朋 ...
- Python爬取暴走漫画动态图
最近再之乎上看到比较好的Python爬虫教程,看过之后对爬虫有了大概的了解,随后自己写了个爬取暴走漫画动图的爬虫练练手,另外附上Python爬虫教程的原始链接,完整看一遍教程之后还是会有很多收获的 源 ...
最新文章
- python求三个整数最大值_怎么用python比较三个数大小
- union和union all有什么区别_Pytorch中Linear与Conv1d(kernel=1)的区别
- asp.net core 3.0 gRPC框架小试
- 分配和释放 BSTR 的内存
- c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧
- 支付宝移动支付SDK - Ruby版本
- 50Hz工频干扰消除
- namp - 端口扫描 主机判断 漏洞分析
- 判断是否是完全二叉树_二叉树:我对称么?
- 计算机四级网络工程师笔记
- 联想小新i1000拆机图解_联想小新笔记本拆机解析
- 华为路由器接口如何区分_华为新一代路由评测,自带NFC,一碰就能联网
- ubuntu测试键盘工具_Lubuntu安装屏幕键盘onboard,使触摸屏可以登录和输入
- Wasserstein距离 和 Lipschitz连续
- Labview2018视频教程(共51节)
- 交叉销售(Cross-Selling)与链接分析
- note9 android auto,天涯明月刀手游自动弹奏autojs脚本安装使用教程及时下流行制谱教程(包含c4和note模板)...
- 最新HAL库SDMMC初始化SD报HardFault
- 数据分析的指南针--数据分析方法论(结合案例)
- mysql删除主键_mysql如何删除主键?
热门文章
- java cdi是什么意思_Java EE CDI的真正好处
- linux nfs时间不对,NFS挂载主机或不稳定的原因与解决方法
- 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
- python的常用数据类型_python 常用数据类型
- listview显示mysql数据_C#在listview控件中显示数据库数据
- sap crm行业解决方案_SAP云平台和第三方CRM解决方案(火锅)互联
- 数字开头的正则表达式_初学Web前端要注意什么 正则表达式是怎么回事
- c# socket接收字符串_socket通信很难?这一文让你轻松搞定!
- go hello world第一个程序
- 打算自己做app,你们做过吗?