package com.ogilvy.sayes.util;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
/*
Description: 爬网页用
Author : long.tang
*/
public class SearchCrawler {
public String myGetHttpFile2(String url) {
String urlSource = url;
StringBuffer htmlBuffer = new StringBuffer();
String returnStr = null;
try {
InputStream imageSource = new URL(urlSource).openStream();
int ch;
while ((ch = imageSource.read()) > -1) {
htmlBuffer.append((char) ch);
}
imageSource.close();
returnStr = new String(htmlBuffer);
returnStr = new String(returnStr.getBytes("ISO8859_1"), "GBK");
} catch (Exception e) {
System.out.println("error>>>>");
e.printStackTrace();
}
//System.out.println("@@@:" + returnStr);
if (returnStr != null) {
return returnStr;
} else {
return "nothing";
}
}
public void doit(String content, int depth) throws Exception {
depth--;
if (depth < 1) {
//System.out.println("break::::");
return;
}
SearchCrawler search = new SearchCrawler();
ArrayList list = new ArrayList();
int j = 0;
String start = "href=";
String end = "\"";
String url = "";
String type = "http";
String[] urls;
while (content.indexOf(start, j) > -1) {
url = content.substring(content.indexOf(start, j) + 6, content.indexOf(end, content.indexOf(start, j) + 6));//+6 href="
if (url.indexOf(type) > -1) {
if (url.indexOf(".css") == -1&&url.indexOf(".ico") == -1&&url.indexOf(".exe") == -1) {
System.out.println(url);
list.add(url);
if (list != null && list.size() > 0) {
for (int k = 0; k < list.size(); k++) {
doit(search.myGetHttpFile2(String.valueOf(list.get(k))), depth);
}
}
}
}
j = content.indexOf(start, j) + 1;
}
}
public static void main(String arg[]) {
SearchCrawler search = new SearchCrawler();
try {
search.doit(search.myGetHttpFile2("http://www.2345.com/"),3);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
在实际的网络爬虫项目中,可能还需要处理反爬虫策略(如User-Agent、验证码)、异步抓取(多线程或异步IO)、数据清洗和预处理,以及持久化爬虫状态(如已抓取URL的存储)。此外,为了不违反网站的robots.txt协议和...
对于新手来说,掌握Java爬虫抓取图片的基本步骤和技巧是十分有益的。 首先,我们需要了解HTTP协议,它是网络上数据传输的基础。在抓取图片时,我们要学会如何通过HTTP GET请求获取图片的URL,这通常涉及到对HTML...
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
### 网页爬虫算法原理与实现方法 #### 一、引言 随着互联网的飞速发展,网络上的信息量呈指数级增长。对于企业和个人来说,如何快速有效地从这些海量信息中提取有价值的数据变得至关重要。网页爬虫作为一种自动化...
"Python爬虫技术的网页数据抓取与分析" 在信息化时代,互联网信息量呈现爆发式的增长,如何在诸多复杂的信息中简单快捷的寻找到有效信息,网络爬虫的诞生能够有效的解决此类问题,改善了信息检索的现状。本文通过...
总结一下,Python爬虫抓取页面图片涉及的知识点有: 1. `requests`库的使用,包括发起HTTP请求和获取响应。 2. HTML解析,如使用`BeautifulSoup`库查找图片链接。 3. 图片URL到绝对路径的转换。 4. 使用`requests`...
在Python编程领域,爬虫是一种常见的...以上就是使用Python进行网页爬虫的基本流程和关键知识点,实际应用中可能需要根据目标网站的具体结构进行调整。记得在操作前检查相关法律法规,尊重网站权益,合理使用爬虫技术。
- **pandas**:一个强大的数据分析和处理库,支持多种数据格式的读写操作,如CSV、Excel等,非常适合用于爬虫抓取的数据整理和分析。 - **SQLAlchemy**:一个SQL工具包和ORM,它提供了完整的SQL语义,支持多种关系型...
### Python爬虫抓取网页数据开发教程 #### 一、引言 随着互联网的发展,网页上的数据变得越来越有价值。为了能够高效地从网络上获取这些数据,Python爬虫技术应运而生。Python语言因其简单易学且功能强大的特点,...
5. **深度限制**:设定爬虫抓取的深度,避免无限制地遍历网页。这可以通过维护一个表示层级的变量来实现,每访问一个新链接,层级加一,超过设定值则停止。 6. **异步处理**:为了提高效率,可以考虑使用多线程或...
爬虫负责抓取互联网上的网页,索引器则将抓取的数据进行结构化处理,创建便于搜索的索引,而检索系统则根据用户的查询从索引中快速找出相关的网页。 在这个"搜索引擎大揭密"中,我们将关注如何用Java实现互联网内容...
这款"简易网页爬虫 V1.0 绿色免费版"软件提供了对网页链接的分析功能,使得用户无需编程知识即可进行基础的数据抓取。 爬虫的基本工作原理是模拟人类浏览器的行为,通过HTTP或HTTPS协议与服务器进行交互,发送请求...
本示例将探讨如何利用Python实现一个简单的网页爬虫,主要涉及的技术包括BeautifulSoup(bs4库)和requests库。 首先,requests库是Python中用于发送HTTP请求的重要工具。通过这个库,我们可以方便地向指定的URL...
在本文中,我们将深入探讨如何使用C# Winform来实现百度网页内容的抓取。Winform是.NET Framework中用于创建桌面应用程序的一种用户界面框架,而内容抓取则是从网络上提取所需信息的一种技术。 首先,我们需要理解...
通过以上步骤,你就可以使用WebMagic完成一个简单的Java爬虫,实现网页数据抓取并导出到Excel文件的功能。记得在实际使用中,根据目标网站的结构和需求调整PageProcessor的解析逻辑,以及Pipeline的数据处理方式。...
在本文中,我们将深入探讨如何使用Go语言(Golang)原生库来实现一个简单的网络爬虫。Go语言因其高效、简洁的语法和强大的并发能力,成为开发爬虫的热门选择。我们将通过一个具体的代码实例来阐述这个过程。 首先,...
静态网页爬虫,顾名思义,是专门针对不涉及动态交互、服务器端生成内容的网页进行数据抓取的工具。本项目是一个用Java编写的静态网页爬虫框架,特别适合初学者入门实践。 **Java 爬虫基础** Java作为一门面向对象...
以下是一个简单的C++网页抓取程序的概述: 1. 引入必要的库: ```cpp #include #include #include ``` 2. 使用libcurl发送HTTP GET请求: ```cpp CURL *curl; CURLcode res; curl_global_init(CURL_...