怎么用java写python 网络爬虫虫将网页中的指定数据下载到本地excel文档中

83款 网络爬虫开源软件 - cy163 - 博客园
随笔 - 1104, 文章 - 0, 评论 - 473, 引用 - 9
Nutch&是一个开源Java&实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web...
最近更新: 发布于 20天前
Grub Next Generation 是一个分布式的网页爬虫系统,包含客户端和服务器可以用来维护网页的索引。
最近更新: 发布于 3年前
Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会 影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。Soukey采摘当前提供的主要功能如下: 1.&&& 多任务多线...
PhpDig是一个采用PHP开发的Web爬虫和搜索引擎。通过对动态和静态页面进行索引建立一个词汇表。当搜索查询时,它将按一定的排序规则显示包含关 键字的搜索结果页面。PhpDig包含一个模板系统并能够索引PDF,Word,Excel,和PowerPoint文档。PHPdig适用于专业化 更...
Snoopy是一个强大的网站内容采集器(爬虫)。提供获取网页内容,提交表单等功能。
JSpider是一个用Java实现的WebSpider,JSpider的执行格式如下: jspider [URL] [ConfigName] URL一定要加上协议名称,如:http://,否则会报错。如果省掉ConfigName,则采用默认配置。 JSpider 的行为是由配置文件具体配置的,比如采用什么插件,结果存储方...
NWebCrawler是一款开源的C#网络爬虫程序
Heritrix是一个开源,可扩展的web爬虫项目。用户可以使用它来从网上抓取想要的资源。Heritrix设计成严格按照robots.txt文件 的排除指示和META robots标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。 Heritrix是一个爬虫框架,其组织结...
Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便~
最近更新: 发布于 6个月前
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。 以下是爬取oschina博客的一段代码: Spider.create(new SimplePageProcessor("http://my.oschina.net/", "http://my.oschina.net/*/blog/*")).t...
最近更新: 发布于 1个月前
OpenWebSpider是一个开源多线程Web Spider(robot:机器人,crawler:爬虫)和包含许多有趣功能的搜索引擎。
Crawler4j是一个开源的Java类库提供一个用于抓取Web页面的简单接口。可以利用它来构建一个多线程的Web爬虫。 示例代码: import java.util.ArrayL import java.util.regex.P import edu.uci.ics.crawler4j.crawler.P import edu.uci.ics.cr...
网页抓取/信息提取/数据抽取软件工具包MetaSeeker (GooSeeker) V4.11.2正式发布,在线版免费下载和使用,源代码可阅读。自推出以来,深受喜爱,主要应用领域: 垂直搜索(Vertical Search):也称为专业搜索,高速、海量和精确抓取是定题网络爬虫DataScrap...
Spiderman - 又一个Java网络蜘蛛/爬虫 Spiderman 是一个基于微内核+插件式架构的网络蜘蛛,它的目标是通过简单的方法就能将复杂的目标网页信息抓取并解析为自己所需要的业务数据。 主要特点 * 灵活、可扩展性强,微内核+插件式架构,Spiderman提供了多达 ...
Methanol 是一个模块化的可定制的网页爬虫软件,主要的优点是速度快。
larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 S&bastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。Larbin只是一个爬虫,也就 是说larbin只抓取网页,至于如何parse的事情则由用户自己...
国内第一个针对微博数据的爬虫程序!原名&新浪微博爬虫&。 登录后,可以指定用户为起点,以该用户的关注人、粉丝为线索,延人脉关系搜集用户基本信息、微博数据、评论数据。 该应用获取的数据可作为科研、与新浪微博相关的研发等的数据支持,但请勿用于商...
Xenu Link Sleuth 也许是你所见过的最小但功能最强大的检查网站死链接的软件了。你可以打开一个本地网页文件来检查它的链接,也可以输入任何网址来检查。它可以分别列出网站 的活链接以及死链接,连转向链接它都分析得一清二楚;支持多线程 ,可以把检查结...
Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。
playfish 是一个采用java技术,综合应用多个开源java组件实现的网页抓取工具,通过XML配置文件实现高度可定制性与可扩展性的网页抓取工 具 应用开源jar包包括httpclient(内容读取),dom4j(配置文件解析),jericho(html解析),已经在 war包的lib下。 这个
本系统采用主流编程语言php和mysql数据库,您可以通过自定义采集规则,或者到我的网站下载共享的规则,针对网站或者网站群,采集您所需的数据,您 也可以向所有人共享您的采集规则哦。通过数据浏览和编辑器,编辑您所采集的数据。 本系统所有代码完全开源,...
YaCy基于p2p的分布式Web搜索引擎.同时也是一个Http缓存代理服务器.这个项目是构建基于p2p Web索引网络的一个新方法.它可以搜索你自己的或全局的索引,也可以Crawl自己的网页或启动分布式Crawling等.
最近更新:
发布于 1年前
Smart and Simple Web Crawler是一个Web爬虫框架。集成Lucene支持。该爬虫可以从单个链接或一个链接数组开始,提供两种遍历模式:最大迭代和最大深度。可以设置 过滤器限制爬回来的链接,默认提供三个过滤器ServerFilter、BeginningPathFilter和 RegularE...
crawlzilla 是一個幫你輕鬆建立搜尋引擎的自由軟體,有了它,你就不用依靠商業公司的收尋引擎,也不用再煩惱公司內部網站資料索引的問題 由 nutch 專案為核心,並整合更多相關套件,並開發設計安裝與管理UI,讓使用者更方便上手。 crawlzilla 除了爬取基本...
HttpBot 是对 java.net.HttpURLConnection类的简单封装,可以方便的获取网页内容,并且自动管理session,自动处理301重定向等。虽 然不能像HttpClient那样强大,支持完整的Http协议,但却非常地灵活,可以满足我目前所有的相关需求。...
NZBGet是一个新闻采集器,其中从新闻组下载的资料格式为nzb文件。它可用于单机和服务器/客户端模式。在独立模式中通过nzb文件作为参数的命令 行来下载文件。服务器和客户端都只有一个可执行文件&nzbget&。 功能和特点 控制台界面,使用纯文本,彩色文字或...
Ex-Crawler 是一个网页爬虫,采用 Java 开发,该项目分成两部分,一个是守护进程,另外一个是灵活可配置的 Web 爬虫。使用数据库存储网页信息。
JobHunter旨在自动地从一些大型站点来获取招聘信息,如chinahr,51job,zhaopin等等。JobHunter 搜索每个工作项目的邮件地址,自动地向这一邮件地址发送申请文本。
HiSpider is a fast and high performance spider with high speed 严格说只能是一个spider系统的框架, 没有细化需求, 目前只是能提取URL, URL排重, 异步DNS解析, 队列化任务, 支持N机分布式下载, 支持网站定向下载(需要配置hispiderd.ini whitelist). 特征...
Combine 是一个用Perl语言开发的开放的可扩展的互联网资源爬虫程序。
jcrawl是一款小巧性能优良的的web爬虫,它可以从网页抓取各种类型的文件,基于用户定义的符号,比如email,qq.
Ebot 是一个用 ErLang 语言开发的可伸缩的分布式网页爬虫,URLs 被保存在数据库中可通过 RESTful 的 HTTP 请求来查询。
spidernet是一个以递归树为模型的多线程web爬虫程序, 支持text/html资源的获取. 可以设定爬行深度, 最大下载字节数限制, 支持gzip解码, 支持以gbk(gb2312)和utf8编码的资源; 存储于sqlite数据文件. 源码中TODO:标记描述了未完成功能, 希望提交你的代码....
ItSucks是一个java web spider(web机器人,爬虫)开源项目。支持通过下载模板和正则表达式来定义下载规则。提供一个swing GUI操作界面。 &
BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。
urlwatch 是一个用来监控指定的URL地址的 Python 脚本,一旦指定的 URL 内容有变化时候将通过邮件方式通知到。 基本功能 配置简单,通过文本文件来指定URL,一行一个URL地址; Easily hackable (clean Python implementation) Can run as a cronjob and m...
最近更新:
发布于 4年前
Methabot 是一个经过速度优化的高可配置的 WEB、FTP、本地文件系统的爬虫软件。
用JAVA编写的web 搜索和爬虫,包括全文和分类垂直搜索,以及分词系统
NCrawler 是一个Web Crawler 工具,它可以让开发人员很轻松的发展出具有Web Crawler 能力的应用程式,并且具有可以延展的能力,让开发人员可以扩充它的功能,以支援其他类型的资源(例如PDF /Word/Excel 等档案或其他资料来源)。 NCrawler 使用多执行绪(...
Crawljax: java编写,开放源代码。 Crawljax 是一个 Java 的工具用于自动化的爬取和测试现在的 Ajax Web 应用。网络爬虫—利用SAS抓取网页方法不足
网络爬虫—利用SAS抓取网页方法不足
在《网络爬虫利用SAS抓取网页方法》这篇文章中,介绍了通过SAS来抓取数据的方法,这篇文章中,主要介绍了一些方法上的不足。读者在使用过程中需要注意。 方法1的一些缺陷: 只找
在《网络爬虫利用SAS抓取网页方法》这篇文章中,介绍了通过SAS来抓取数据的方法,这篇文章中,主要介绍了一些方法上的不足。读者在使用过程中需要注意。
方法1的一些缺陷:
只找到全球URLS 我们简单的Web履带DATA步实施有很多缺点。首先,它是寻找网址 & a href=&&&&标签内只发现。 URL可以出现在许多地方,整个网页。更健壮提取网址的方法将包括更多和更复杂的Perl正则表达式。其次,我们的简单的Web抓取工具可以抓取,只有以http://开头的URL 。如果我们发现一个标签,我们会像& a href=&../index.html&& 有包括后处理代码转换.. / index.html来/index.html,以便能够使用我们的文件名语句浏览网页。并不安全有没有内置的安全装置。网络爬虫会继续,直到有 work.links_to_crawl没有更多的链接数据集。理想的情况下,我们将添加一些后处理检查,以确定是否我们离开我们的目标域。例如,如果我们补充说:&&作为种子URL,我们希望只抓取这些网页包含 &&(换句话说,在/autos 不)。
粗鲁上网浏览的概念是一种礼貌的。我们小的网络爬虫是简单而快速。它可以发现和提取在第二个网址数百。像雅虎显示器快速网页下载请求从某些网站单一来源。如果他们发现了从单一来源的流量太多,他们将油门的响应时间,在服务您要求的网页。这样可以大大减慢履带。此外,履带式可能不下载整个由于这些限制问题的页。方法2:SAS文本挖掘的网页爬行我们的网络爬虫的缺点都可以是固定的。我们可以尝试修改,我们简单的SAS数据步网站履带式,或选择使用一个更好的。
要选择一个丰富的数据挖掘工具,SAS Enterprise Miner的提供集,插件的SAS文本挖掘%TMFILTER宏提供了一个更好的网络爬虫。如果你有持牌SAS文本矿工,那么你访问%TMFILTER宏。这个宏调用一些优化的代码,并下载导入文件。%TMFILTER可以执行两个任务: 1。它可以抓取互联网。 2。它可以抓取本地文件和目录果获得一个网址,%TMFILTER,可以导航到该站点,下载文件,保存为HTML,检查多个URL ,继续爬行。%TMFILTER,而不是一个URL,如果本地文件指定目录,将递归导航目录树,转换到HTML中找到的文件。这些文件可能是一个收集便携式文档格式(PDF),超文本标记语言(HTML),或在硬盘文件夹中的Microsoft Office文件。所有文件先转换为HTML并存储在硬盘驱动器上的目标目录%TMFILTER 。然后它创建一个SAS数据集包含的信息,其格式,等等,其中每个文件存储。这些 HTML文件,然后可以导入到SAS 。要转换成SAS数据集的文件目录,你可以这样使用%TMFILTER : tmfilter%(数据集的数据集名,DIR =路径到原始文件, DESTDIR =路径- html文件); 要下载的URL抓取网页,您可以使用这样的%TMFILTER: tmfilter%(数据集的数据集名,DIR =路径到原始文件, DESTDIR =路径html文件,URL =网址,深度=整数); URL参数告诉%TMFILTER应该开始爬行。深度参数提供告诉限制%TMFILTER多少水平应该抓取。
方法2的一些优点:%TMFILTER SAS数据步代码的网络爬虫是一个出色的解决方案。由于核心爬行模块%TMFILTER是在C + +编程语言编写的,它是一个更快的和高效的履带式。此外,宏可以提取更多的网址。 SAS数据步网络爬虫只能找到类型的网址,我们告诉它。那在很大程度上将取决于你的能力,撰写和调试正则表达式在Perl编程语言。因为Perl的正则表达式是如此紧凑又简洁,它可以很难找到和调试构图时,他们的错误。%TMFILTER已自动为我们所有的护理。最后,这是错误少俯卧比我们的SAS数据步网络爬虫。%TMFILTER已在生产中使用了数年抓取数以百计的千兆字节的互联网数据。这是一个专业级产品。 SAS文本挖掘文档中可以找到更多关于如何最好地利用%TMFILTER的信息。
方法3:WEB与SAS搜索管道爬行其他两种方法,如果不符合您的需求,那么您将需要的SAS搜索管道的力量。这是目前在SAS内部的项目,我们希望在不久的将来提供给客户。这将有抓取整个网站的能力,提取和组织,从网站的信息,和索引中的数据可以很容易地通过搜索后。它开始,如果你喜欢用一个简单的种子URL或多个URL。从那里,它像其他作品网络爬虫。它的下载网站,搜索链接,这些链接网站下载,等等。是什么让特别呢?答案是其处理技术。首先,SAS搜索管道将允许您自定义自己的解析器,因此索引文件,以满足您的需求。例如,您可能希望每个下载页上的另一篇文章,或者您可能有兴趣下载页面含有多个RSS提要,这样每个饲料是一个单独的文章。定制的分析器提供了一个简单,方便的方式来处理这种区别。不仅SAS搜索管道提供预先处理功能,但它也将提供后处理程序选项。假设你想从网站中删除的HTML标记,以防止从同一网站下载的履带两次。 SAS搜索管道将采取这种照顾你。这将有许多内置的后处理选项,包括具体的数据,分类文章,提取和修改索引字段名称。该指数建设者 SAS搜索管道存储在一个指数,可以通过去除修改或所有的文章,成功地处理 appendance的更多的文章。还提供一个查询工具,为您在其中的一个或多个关键字搜索感兴趣。为您提供了一个功能的关键字或关键字的文章列表,您可以使用此列表进一步的研究。 SAS搜索管道的最佳功能之一是,它可以产生的结果与其他SAS集成工具。 SAS搜索管道包括一个后处理程序,以直接出口物品到SAS数据集或一个逗号分离值(CSV)文件,可以很方便地阅读到的SAS使用proc导入。在这种方式,您可以使用 SAS来分析整个Web!
(责任编辑:admin)
转载请注明链接:
------分隔线----------------------------
网页标题:
以下是网友对的评论:教你编写简单的网络爬虫_Java123社区微信号:java123msg |||[][]当前位置: &
& 教你编写简单的网络爬虫一、网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念。爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一、网络爬虫的基本知识&网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念。爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边。图的遍历方式分为宽度遍历和深度遍历,但是深度遍历可能会在深度上过深的遍历或者陷入黑洞。所以,大多数爬虫不采用这种形式。另一方面,爬虫在按照宽度优先遍历的方式时候,会给待遍历的网页赋予一定优先级,这种叫做带偏好的遍历。实际的爬虫是从一系列的种子链接开始。种子链接是起始节点,种子页面的超链接指向的页面是子节点(中间节点),对于非html文档,如excel等,不能从中提取超链接,看做图的终端节点。整个遍历过程中维护一张visited表,记录哪些节点(链接)已经处理过了,跳过不作处理。使用宽度优先搜索策略,主要原因有:a、重要的网页一般离种子比较近,例如我们打开的新闻网站时候,往往是最热门的新闻,随着深入冲浪,网页的重要性越来越低。b、万维网实际深度最多达17层,但到达某个网页总存在一条很短路径,而宽度优先遍历可以最快的速度找到这个网页c、宽度优先有利于多爬虫合作抓取。二、网络爬虫的简单实现&1、定义已访问队列,待访问队列和爬取得URL的哈希表,包括出队列,入队列,判断队列是否空等操作&import java.util.HashSimport java.util.PriorityQimport java.util.Simport java.util.Qpublic class LinkQueue { // 已访问的 url 集合 private static Set visitedUrl = new HashSet(); // 待访问的 url 集合 private static Queue unVisitedUrl = new PriorityQueue(); // 获得URL队列 public static Queue getUnVisitedUrl() {
return unVisitedU } // 添加到访问过的URL队列中 public static void addVisitedUrl(String url) {
visitedUrl.add(url); } // 移除访问过的URL public static void removeVisitedUrl(String url) {
visitedUrl.remove(url); } // 未访问的URL出队列 public static Object unVisitedUrlDeQueue() {
return unVisitedUrl.poll(); } // 保证每个 url 只被访问一次 public static void addUnvisitedUrl(String url) {
if (url != null && !url.trim().equals("") && !visitedUrl.contains(url)
&& !unVisitedUrl.contains(url))
unVisitedUrl.add(url); } // 获得已经访问的URL数目 public static int getVisitedUrlNum() {
return visitedUrl.size(); } // 判断未访问的URL队列中是否为空 public static boolean unVisitedUrlsEmpty() {
return unVisitedUrl.isEmpty(); }}2、定义DownLoadFile类,根据得到的url,爬取网页内容,下载到本地保存。此处需要引用commons-httpclient.jar,commons-codec.jar,commons-logging.jar。&&import java.io.DataOutputSimport java.io.Fimport java.io.FileOutputSimport java.io.IOEimport org..commons.httpclient.DefaultHttpMethodRetryHimport mons.httpclient.HttpCimport mons.httpclient.HttpEimport mons.httpclient.HttpSimport mons.httpclient.methods.GetMimport mons.httpclient.params.HttpMethodPpublic class DownLoadFile { /**
* 根据 url 和网页类型生成需要保存的网页的文件名 去除掉 url 中非文件名字符
*/ public String getFileNameByUrl(String url, String contentType) {
// remove http://
url = url.substring(7);
// text/html类型
if (contentType.indexOf("html") != -1) {
url = url.replaceAll("[\\?/:*|&&\"]", "_") + ".html";
// 如application/pdf类型
return url.replaceAll("[\\?/:*|&&\"]", "_") + "."
+ contentType.substring(contentType.lastIndexOf("/") + 1);
* 保存网页字节数组到本地文件 filePath 为要保存的文件的相对地址
*/ private void saveToLocal(byte[] data, String filePath) {
DataOutputStream out = new DataOutputStream(new FileOutputStream(
new File(filePath)));
for (int i = 0; i & data. i++)
out.write(data[i]);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} } /* 下载 url 指向的网页 */ public String downloadFile(String url) {
String filePath =
/* 1.生成 HttpClinet 对象并设置参数 */
HttpClient httpClient = new HttpClient();
// 设置 Http 连接超时 5s
httpClient.getHttpConnectionManager().getParams()
.setConnectionTimeout(5000);
/* 2.生成 GetMethod 对象并设置参数 */
GetMethod getMethod = new GetMethod(url);
// 设置 get 请求超时 5s
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
// 设置请求重试处理
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
/* 3.执行 HTTP GET 请求 */
int statusCode = httpClient.executeMethod(getMethod);
// 判断访问的状态码
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ getMethod.getStatusLine());
filePath =
/* 4.处理 HTTP 响应内容 */
byte[] responseBody = getMethod.getResponseBody();// 读取为字节数组
// 根据网页 url 生成保存时的文件名
filePath = "f:\\spider\\"
+ getFileNameByUrl(url,
getMethod.getResponseHeader("Content-Type")
.getValue());
saveToLocal(responseBody, filePath);
} catch (HttpException e) {
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
// 发生网络异常
e.printStackTrace();
} finally {
// 释放连接
getMethod.releaseConnection();
return fileP }}共2页顶一下(0)0%踩一下(0)0%------分隔线------上一篇: 下一篇: 栏目列表推荐内容一、状态栏通知(Notification):如果需要查看消息,可以拖动状态...
mo文件是被编译了的文件,一般在汉化的时候会用到。比如我想...
此配置文件可以直接拿来用,配置文件上面有详细用法说明,里...
一、概述 小文件是指文件size小于HDFS上block大小的文件。这样的...
1 package com. 2 3 4 import java.io.F 5 import java.io.FileInputS 6 ...
正表达式就是一段匹配文本片段的模式,在Python 中 re 模块包含...

我要回帖

更多关于 python 网络爬虫 的文章

 

随机推荐