`
fuyun369
  • 浏览: 31262 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

爬虫抓取网页图片

阅读更多
使用爬虫抓取艺术猫网页上的图片,信息

package com.yishu.site.cnrenti;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.yuxiong.utils.commonshc.MyGetMethod;

import com.yishu.commons.Domian;
import com.yishu.commons.Globals;

/**
* 艺术猫(http://www.ysmao.com)
* @author fuyun
*  2009-8-15
*/
public class PictureParser extends GetMethod{


public PictureParser(String uri) {
super(uri);
}

// <div id="content">
// <div class="onetd noBorder">
private static final NodeFilter CONTENT_DIV_ID = new AndFilter(
new TagNameFilter("div"), new HasAttributeFilter("id","content"));
private static final NodeFilter ONETD_DIV_CLASS = new AndFilter(
new TagNameFilter("div"), new HasAttributeFilter("class","onetd noBorder"));

private static final NodeFilter FILTER_A = new TagNameFilter("a");
private static final NodeFilter FILTER_IMG = new TagNameFilter("img");


public static String one(String url,int i,String type) throws HttpException, IOException{

MyGetMethod method = new MyGetMethod(url);
Globals.getClient(Domian.CNRENTI).executeMethod(method);
String body = method.getResponseBodyAsString();
Parser mobileParser = Parser.createParser(body, Globals.CHARSET_UTF8);
try {
NodeList nodeList = mobileParser.parse(CONTENT_DIV_ID);
Parser nodeParser1 = Parser.createParser(nodeList.toHtml(), Globals.CHARSET_UTF8);

NodeList aNlist1 = nodeParser1.parse(FILTER_A);
//System.out.println(aNlist1.toHtml());
if(aNlist1 != null && aNlist1.size()>0){
Node aNode2 = aNlist1.elementAt(aNlist1.size()-1);
LinkTag link2 = (LinkTag)aNode2;
int yeshu = Integer.parseInt(link2.getLink().split(".htm")[0].split("_")[1]);
System.out.println("页数:"+yeshu);
if(yeshu > 0){
for(int a=1;a<yeshu+1;a++){
url = "http://www.ysmao.com/ystype/"+i+"_"+a+".htm";
two(type,url);
}
}
}
} catch (ParserException e) {e.printStackTrace();
}
return new String(body.getBytes(Globals.CHARSET_UTF8));

}


public static String two(String type,String url) throws HttpException, IOException{

MyGetMethod method = new MyGetMethod(url);
Globals.getClient(Domian.CNRENTI).executeMethod(method);
String body = method.getResponseBodyAsString();
Parser mobileParser = Parser.createParser(body, Globals.CHARSET_UTF8);
try {
NodeList nodeList = mobileParser.parse(CONTENT_DIV_ID);
Parser nodeParser1 = Parser.createParser(nodeList.toHtml(), Globals.CHARSET_UTF8);

NodeList aNlist1 = nodeParser1.parse(ONETD_DIV_CLASS);
//System.out.println("aNlist1 = "+aNlist1.toHtml());
if(aNlist1 != null && aNlist1.size()>0){
for(int aa=0;aa<(aNlist1.size()-1);aa++){
Node aNode2 = aNlist1.elementAt(aa);
//NodeList aNlist1 = aNode2.parse(FILTER_SPAN);
Long click =  Long.parseLong(aNode2.getLastChild().getChildren().elementAt(0).getChildren().elementAt(1).getChildren().toHtml());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date submittime = sdf.parse(aNode2.getLastChild().getChildren().elementAt(2).getChildren().elementAt(1).getChildren().toHtml());
String subuser = aNode2.getLastChild().getChildren().elementAt(1).getChildren().elementAt(1).getChildren().toHtml();
String titlelist = aNode2.getChildren().elementAt(1).getChildren().elementAt(0).toPlainTextString();
String surl = aNode2.getChildren().elementAt(1).getChildren().elementAt(0).getText().split("/htm")[1];
String strurl = "http://www.ysmao.com/htm"+surl.substring(0, surl.length()-1);
System.out.println("图片分类 = "+type);
System.out.println("[组]标题 = "+titlelist);
System.out.println("[组]地址 = "+strurl);
System.out.println("点击次数 = "+click);
System.out.println("上传者 = "+subuser);
System.out.println("上传时间 = "+submittime);

                  picture(type,titlelist,strurl,click,subuser,submittime);
}
}
} catch (ParserException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
return new String(body.getBytes(Globals.CHARSET_UTF8));
}


public static String picture(String type,String titlelist,String strurl,Long click,String subuser,Date submittime) throws HttpException, IOException{

MyGetMethod method = new MyGetMethod(strurl);
Globals.getClient(Domian.CNRENTI).executeMethod(method);
String body = method.getResponseBodyAsString();
Parser mobileParser = Parser.createParser(body, Globals.CHARSET_UTF8);
try {
NodeList nodeList = mobileParser.parse(CONTENT_DIV_ID);
Parser nodeParser1 = Parser.createParser(nodeList.toHtml(), Globals.CHARSET_UTF8);

NodeList aNlist1 = nodeParser1.parse(ONETD_DIV_CLASS);
//System.out.println(aNlist1.toHtml());
if(aNlist1 != null && aNlist1.size()>0){
for(int aa=0;aa<(aNlist1.size());aa++){
Node aNode2 = aNlist1.elementAt(aa);
//System.out.println(aNode2.toHtml());
String name = aNode2.getChildren().elementAt(0).getChildren().elementAt(0).getChildren().toHtml().split("名称:")[1];

System.out.println("图片名 = "+name.substring(0, name.length()-2));

Parser nodeParser11 = Parser.createParser(aNlist1.toHtml(), Globals.CHARSET_UTF8);
NodeList aNlist11 = nodeParser11.parse(FILTER_IMG);
Node aNode11 = aNlist11.elementAt(aa);
ImageTag img = (ImageTag)aNode11;
//String bigPicUrl = img.getImageURL().substring(0, img.getImageURL().length()-10)+"big/"+img.getImageURL().substring(img.getImageURL().length()-10, img.getImageURL().length());
System.out.println("小图片 = "+img.getImageURL());
if(img.getImageURL().split("/").length == 5){
String pic = img.getImageURL().split("/")[0]+"/"+img.getImageURL().split("/")[1]+"/"+img.getImageURL().split("/")[2]+"/"+img.getImageURL().split("/")[3];
String bigPicUrl = pic+"/big/"+img.getImageURL().split("/")[4];
System.out.println("大图片 = "+bigPicUrl);
}

//System.out.println("大图片 = "+bigPicUrl+"\n");
}
}
} catch (ParserException e) { 
e.printStackTrace();
}
return new String(body.getBytes(Globals.CHARSET_UTF8));
}


public static void main(String[] arge) throws HttpException, IOException{

String type = "";
for(int i=1;i<9;i++){
if(i == 1)          type = "东方人体";
else if(i == 2)     type = "西方人体";
else if(i == 3)     type = "人体彩绘";
else if(i == 4)     type = "油画艺术";
else if(i == 5)     type = "素描艺术";
else if(i == 6)     type = "雕塑艺术";
else if(i == 7)     type = "水墨艺术";
else if(i ==     type = "其它艺术";
one("http://www.ysmao.com/ystype/"+i+"_1.htm",i,type);

}
}
}
分享到:
评论

相关推荐

    Python3简单爬虫抓取网页图片代码实例

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到大家,并希望大家批评指正。 ...

    python爬虫抓取网页图片多种示例

    python爬虫抓取网页图片在Python中,你可以使用requests库来发送HTTP请求,以及BeautifulSoup或Scrapy库来解析网页内容。你也可以使用selenium库,它是一个自动化测试工具,用于模拟用户在浏览器中的操作。下面是一...

    网络爬虫 抓取网页图片 find 函数实现

    python写的网络爬虫,实现用request库 抓取网页图片 find 函数实现

    java爬虫抓取网页内容,下载网站图片

    综上所述,Java爬虫抓取网页内容并下载图片涉及的技术点主要包括HTML解析、网络请求、图片下载、分页处理、反爬策略、异步处理、存储与持久化、异常处理以及法律合规。通过学习和实践这些知识点,你可以构建起一个...

    利用Python爬虫抓取网页上的图片(含异常处理)

    利用Python爬虫抓取网页上的图片,当遇到不合法的URL时,会自动处理异常,不会导致程序崩溃。直到下载完整个页面的图片,程序才会退出

    java爬虫抓取图片

    对于新手来说,掌握Java爬虫抓取图片的基本步骤和技巧是十分有益的。 首先,我们需要了解HTTP协议,它是网络上数据传输的基础。在抓取图片时,我们要学会如何通过HTTP GET请求获取图片的URL,这通常涉及到对HTML...

    Python之多线程爬虫抓取网页图片的示例代码

    本篇文章将详细讲解如何利用Python实现一个多线程爬虫来抓取网页上的图片。 首先,我们需要理解多线程的概念。在Python中,`threading`库提供了创建和管理线程的功能。通过并发执行任务,多线程可以在同一时间处理...

    python网络爬虫抓取图片

    利用python抓取网络图片的步骤: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片

    java爬虫,抓取网页图片

    Java爬虫技术是一种利用编程语言(本例中是Java)自动化地从互联网上...通过以上知识点的学习和实践,你可以构建一个基本的Java图片爬虫,实现从网页中抓取并下载图片的功能。记住,持续学习和实践是提升技能的关键。

    python 爬虫之抓取页面图片

    总结一下,Python爬虫抓取页面图片涉及的知识点有: 1. `requests`库的使用,包括发起HTTP请求和获取响应。 2. HTML解析,如使用`BeautifulSoup`库查找图片链接。 3. 图片URL到绝对路径的转换。 4. 使用`requests`...

    Python爬虫抓取图片以及使用Spider模仿用户行为抓取403错误网页

    2. **Python爬虫抓取网页**: - **BeautifulSoup库**:用于解析HTML和XML文档,帮助我们提取所需信息。例如,我们可以使用`find_all()`或`select()`方法查找特定标签。 - **requests库**:发送HTTP请求的库,用于...

    抓取网页图片,css和js

    综上所述,抓取网页图片、CSS和JS涉及HTML解析、CSS解析、HTTP请求等多个环节,需要结合合适的工具和技术来实现。对于整个网页下载,有现成的工具可以简化这一过程,但使用时仍需考虑合规性和道德性。

    网页爬虫工具能够抓取网页信息的软件

    这一功能的实现,依赖于其强大的抓取能力,能够深入访问网页的每一个角落,包括文本、图片、链接等。网页爬虫工具不仅可以帮助我们更好地了解互联网的信息分布,还可以用于搜索引擎优化、市场研究、学术研究等众多...

    分享python爬虫抓取图片.pdf

    【Python爬虫抓取图片】知识点: Python爬虫是一种用于自动化网络数据抓取的技术,它可以帮助我们从网页上批量下载图片。Python有许多库支持这项任务,如BeautifulSoup、Scrapy和Requests-HTML等。其中,Requests库...

    qt写的抓取网页图片并保存到本地

    在这个项目中,"qt写的抓取网页图片并保存到本地",开发者利用QT的网络编程和文件操作功能,实现了一个小型的爬虫程序。这个程序可以解析指定URL的网页内容,从中提取出所有的图片链接,并将这些图片下载保存到本地...

    爬虫抓取美女图片,附带demo,有兴趣的可以玩玩

    在本项目中,提供的“爬虫抓取图片”可能包含以下几个部分: 1. **主程序**:设置URL,启动爬虫过程。 2. **网络请求模块**:发送HTTP请求并接收响应。 3. **HTML解析模块**:使用Jsoup解析HTML,提取图片链接。 4. ...

    python爬虫抓取mm图片

    本案例主要探讨了如何使用Python编写爬虫来抓取网络上的美女图片。以下将详细阐述涉及的知识点: 首先,Python爬虫的基本原理是通过模拟浏览器发送HTTP请求到服务器,获取响应数据,然后对响应数据进行解析,提取所...

    python爬虫抓取英雄联盟人物图片案例代码

    这是一个简单的Python代码示例,用于通过网页爬虫抓取英雄联盟(League of Legends)游戏中的人物图片。在这个示例中,我将使用requests库和BeautifulSoup库来实现网页数据的获取和解析。 这段代码会发起一个请求,...

Global site tag (gtag.js) - Google Analytics