依赖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爬取性感美图相关推荐

  1. Java爬虫代码示例|入门教程 1- 快速爬取百度美图

    文章目录 前言 源码 参考 前言 说起搜索,大家一定对百度不陌生.每个搜索引擎后边都是一个大型爬虫调度系统. 第一篇我们先以百度为例 每天都被它爬,今天我们来爬一下它. 源码 url分析 https: ...

  2. 爬取一个美图网站的图片脚本

    # -*- coding: utf-8 -*- """ Created on Thu Dec 9 23:31:12 2021@author: davis "&q ...

  3. 美图 html模板,httpclient爬取美图

    httpclient批量爬取性感美图,完整源码. 资源下载此资源下载价格为2D币,请先登录 资源文件列表 GetGoodPic/.classpath , 1215 GetGoodPic/.mymeta ...

  4. 第一个爬虫项目-爬取唯美小姐姐网站

    爬取唯美小姐姐网站 链接: 源代码文件下载地址 展示 源代码 import requests import re import os import time# 伪装 用于可以伪装成浏览器. heade ...

  5. Python爬取系列妹子图实战总结(程序员节福利哟)

    Python爬取系列妹子图(福利哟~~~) 用到的模块:requests 和 lxml中的html 今天呢是10月24日,天气一如既往的好,也是传说中的程序员节,来爬波妹子图岂不美哉!!! 开始操作: ...

  6. 爬取唯美女生网站上所有小姐姐的照片

    爬取唯美女生网站 前几天刚好看到有人在教学爬取唯美女生网站(https://www.vmgirls.com)的图片,大致听了一下,只是介绍了一次爬取某一个小姐姐的照片,因此就尝试做一个爬取全站小姐姐照 ...

  7. HttpClient 爬取百度图片

    HttpClient 爬取百度图片 以前写的一篇爬取百度图片的博客是我第一次用Java接触爬虫的相关知识,当时使用的Java的原生类库,写的不是很好,特别是对于分页的处理(导致许多图片重复下载了)以及 ...

  8. python爬取图片源码_半次元图片爬取-python爬取半次元图片源码下载-西西软件下载...

    python爬取半次元图片源码,由大神自制的python爬取工具,本源码针对半次元图片平台,可以爬取最新的网站图片资源,支持自定义保存目录,非常方便,需要requests库的支持,想要相关源码资源的朋 ...

  9. Python爬取暴走漫画动态图

    最近再之乎上看到比较好的Python爬虫教程,看过之后对爬虫有了大概的了解,随后自己写了个爬取暴走漫画动图的爬虫练练手,另外附上Python爬虫教程的原始链接,完整看一遍教程之后还是会有很多收获的 源 ...

最新文章

  1. python求三个整数最大值_怎么用python比较三个数大小
  2. union和union all有什么区别_Pytorch中Linear与Conv1d(kernel=1)的区别
  3. asp.net core 3.0 gRPC框架小试
  4. 分配和释放 BSTR 的内存
  5. c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧
  6. 支付宝移动支付SDK - Ruby版本
  7. 50Hz工频干扰消除
  8. namp - 端口扫描 主机判断 漏洞分析
  9. 判断是否是完全二叉树_二叉树:我对称么?
  10. 计算机四级网络工程师笔记
  11. 联想小新i1000拆机图解_联想小新笔记本拆机解析
  12. 华为路由器接口如何区分_华为新一代路由评测,自带NFC,一碰就能联网
  13. ubuntu测试键盘工具_Lubuntu安装屏幕键盘onboard,使触摸屏可以登录和输入
  14. Wasserstein距离 和 Lipschitz连续
  15. Labview2018视频教程(共51节)
  16. 交叉销售(Cross-Selling)与链接分析
  17. note9 android auto,天涯明月刀手游自动弹奏autojs脚本安装使用教程及时下流行制谱教程(包含c4和note模板)...
  18. 最新HAL库SDMMC初始化SD报HardFault
  19. 数据分析的指南针--数据分析方法论(结合案例)
  20. mysql删除主键_mysql如何删除主键?

热门文章

  1. java cdi是什么意思_Java EE CDI的真正好处
  2. linux nfs时间不对,NFS挂载主机或不稳定的原因与解决方法
  3. 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
  4. python的常用数据类型_python 常用数据类型
  5. listview显示mysql数据_C#在listview控件中显示数据库数据
  6. sap crm行业解决方案_SAP云平台和第三方CRM解决方案(火锅)互联
  7. 数字开头的正则表达式_初学Web前端要注意什么 正则表达式是怎么回事
  8. c# socket接收字符串_socket通信很难?这一文让你轻松搞定!
  9. go hello world第一个程序
  10. 打算自己做app,你们做过吗?