Java实现利用搜索引擎收集网址的程序

基于JAVA的文本搜索引擎的设计与实现 本文主要是承接上一个项目文本预处理(资源中已经给出)的数据来作为支撑进行设计与实现的文本搜索引擎,采用的是Lucene工具包来进行实现的,同时还进行了余弦相似度的检测以及K-Means聚类分析,本报告是比较详细的给出了设计与实现步骤以及源代码。 如果需要具体的项目文件以及数据的请加QQ:404125822, 立即下载
我这里讲的不是怎么使用搜索引擎,而是怎么让程序利用搜索引擎来搜集网址,这有什么用?很有用!网上动辄有人叫卖网址数据库,如发布软件网址、邮件地址、论坛网址、行业网址,这些网址是怎么来的呢?不可能是人手工收集而来的,都是让程序利用搜索引擎取到的,如果您需要某类网址信息数据,就跟我来一起研究一下,非常简单。

  本文采用
Java 语言写成,以google和百度搜索引擎为对象。

  我们要利用google、百度搜索引擎的搜索规则中的两条,关键字搜索和inurl搜索。什么是inurl搜索,就是你所要搜索的网址中本身带有的关键字,比如
http ://www.xxx.com/post.asp ,这个网址就含有post.asp这样的关键字,在搜索引擎中填写规则是 inurl:post.asp,这是收集网址的关键,因为很多网址本身会带有特定的信息,比如软件发布的网页网址信息中多含有 publish、submit、tuijian这样的信息,如http://www.xxx.com/publish.asp,这样的网址多是发布信息的网页,在结合网页中本身可能含有的关键字,就可以用搜索引擎搜索出结果,然后我们利用程序将结果取回,对HTML页面进行分析,去除没有用的信息,将有用的网址信息写入文件或者数据库,就可以给其它应用程序或者人来使用了。

  第一步,用程序将搜索结果取回,先以百度为例,比如我们要搜索软件发布的网页,关键字采用 “软件发布 版本 inurl:publish.asp",先登录百度看看,将关键字写入,然后提交,在地址栏就会看到 http://www.baidu.com/s?ie=gb2312&bs=%C8%
ED %BC% FE %B7%A2%B2%BC+%C8%ED%BC%FE%B0%E6%B1%BE+inurl%3Apublish.asp&sr=&z=&cl=3&f=8&wd=%C8%ED%BC%FE%B7%A2%B2%BC+%B0%E6%B1%BE+inurl%3Apublish.asp&ct=0 ,中文关键字全都变成编码了,没有关系,我们在程序中直接用中文也是可以的,其中多个关键字用+号相连,去掉一些没有用的信息,我们可以把地址优化成http://www.baidu.com/s?lm=0&si=&rn=20&ie=gb2312&ct=0&wd=软件发布+版本+inurl%3Apublish%2Easp&pn=0&cl=0,其中rn表示一页显示多少个结果,wd=表示你要搜索的关键字,pn表示从第几条开始显示,这个pn将是我们程序循环取结果的变量,每20条循环一次。我们用Java写的程序来模拟这个搜索的过程,用到的关键类为 java.net.HttpURLConnection,java.net.URL,先写一个提交搜索的class,关键代码如下:

class Search
{
 public URL url;
 public HttpURLConnection http;
 public java.io.InputStream urlstream;
 ......
 for(int i=0;i++;i<100)
 {
  ......
  try {
   url = new URL("http://www.baidu.com/s?lm=0&si=&rn=20&ie=gb2312&ct=0&wd=软件发布+版本+inurl%3Apublish%2Easp&pn="+beginrecord+"&cl=0");
  }catch(Exception ef){};
  try {
   http = (HttpURLConnection) url.openConnection();
   
http.connect();
   urlstream = http.getInputStream();
  }catch(Exception ef){};
  java.io.BufferedReader l_reader = new java.io.
  BufferedReader(new java.io.InputStreamReader(urlstream));
  try {
   while ((currentLine = l_reader.readLine()) != null) {
    totalstring += currentLine;
   }
  } catch (IOException ex3) {}
  ....
  //本次搜索的结果已经放到totalstring中了,是一些HTML代码,需要下一步进行分析了。
}

  再以google为例,稍微有些不同,google对浏览器进行了一些检测,编码也不同,URL为http://www.google.com/search?q=软件发布+版本+inurl:publish.asp&hl=zh-CN&lr=&newwindow=1&start=0&sa=N&ie=UTF-8,其中编码要用ie=UTF-8,start表示从第几条记录显示,需要注意的是google对浏览器还要检查,如果浏览器不符合它的要求,将返回错误代码,所以在模拟浏览器提交中,我们要多加一行代码,修改关键部分要将http属性中的User-Agent设置为常用的浏览器,比如Mozilla/4.0,代码如下:

try {
 http = (HttpURLConnection) url.openConnection();
 http.setRequestProperty("User-Agent", "Mozilla/4.0");
 http.connect();
 urlstream = http.getInputStream();
}catch(Exception ef){};

  第二步,对取回的HTML编码进行分析,取出其中的有用网址信息,并写入文件或者数据库,由于这些搜索引擎都有网页快照和相似网页等网址信息混杂在HTML中,我们要将这些网址信息剔除掉,剔除的关键就是找出其中的规律,百度搜索引擎中的网页快照和其它没有用的的地址都含有baidu这个关键字,而google中含有的无用网址信息含有关键字 google和cache,我们就根据这些关键字剔除无用网址信息。在Java中要对字符串进行分析必然要用到java.util.StringTokenize这个类,用来将字符串以特定的分隔符分开,java.util.regex.Pattern和java.util.regex.Matcher用来匹配字符串,关键代码如下:

class CompareStr
{
 public boolean comparestring(String oristring,String tostring)
 {
  Pattern p=null; //正则表达式
  Matcher m=null; //操作的字符串
  boolean b;
  p = Pattern.compile(oristring,Pattern.CASE_INSENSITIVE);
  m = p.matcher(tostring);
  b = m.find();
  return b;
 }
}

class AnalyUrl
{
 ......
 StringTokenizer token = new StringTokenizer(totalstring,"<> "");
 String firstword;
 CompareStrcompstr = new CompareStr();
 String dsturl = null;
 while (token.hasMoreTokens())
 {
  firstword = token.nextToken();
  if (!compstr.comparestring("google.com", firstword) && !compstr.comparestring("cache",firstword))
  {
   if (firstword.length() > 7)
   {
    dsturl = firstword.substring(6,firstword.length() - 1);
    WriteUrl(dsturl); //成功取到URL,记录到文件中
   }
  }
 }
}

  通过以上程序,我们就可以收集到自己要的网址信息了,还可以再写另外一个应用程序,对收集到的网址信息进一步分析,取出自己需要的信息,这里就不再累赘,道理都是一样的。最后需说明一点,google搜索引擎搜索所能返回的结果不能超过1000条,过了1000条,就直接提示“对不起,Google 为所有查询的结果数都不会超过 1000 个。”,百度搜索引擎返回的结果不能超过700多条,所以我们要搜索时尽可能多加关键字,将结果范围缩小。
搜索引擎 基于java的搜索引擎 实现了简单的搜索引擎,爬虫,网页处理 建立正派索引,倒排索引,实现检索 立即下载

相关推荐

【信息检索】Java实现简易搜索引擎.zip

Java实现的简易搜索引擎,服务器SpringBoot,客户端jQuery+Bootstrap。 具体实现步骤及相应的讲解,可参考文章:https://blog.youkuaiyun.com/qq_40121502/article/details/89974810

Java项目之搜索引擎

前置知识 搜索引擎的核心功能,就是查找到一组和用户输入的词/一句话 相关联的网页 关键字:搜索词;搜索结果的标题,搜索结果的描述,展示URL,跳转过去的目标页面,称为“落地页”; 对于一个搜索引擎来说,首先,需要获取到很多很多的网页;然后再根据用户输入的查询词,在这些网页中进行查找。 1.搜索引擎的网页是怎么获取到的? 此处主要是涉及到“爬虫”这样的程序(Http客户端) 2.用户输入了查询词之后,如何去让查询词和当前的这些网页进行匹配? 假设当前已经爬取到了一亿个网页,用户输入了一个"蛋糕"这.

qq_39537400的博客 3807

google,baidu,bing网页搜索(java实现)

这个程序的功能是利用常用的搜索引擎搜索关键词获得搜索结果,然后访问每个搜索结果将排在前面的所有网页的文本信息全部抓下来。 程序采用多线程(不超过20个,保证不影响其他程序)和超时设置(默认10秒),自己觉得挺好用的。 包括google网页搜索(GoogleQuery.java) baidu网页搜索(BaiduQuery.java) bing网页搜索(BingQuery.java) 三种主流搜索引擎的java调用。 其中google和baidu搜索采用http请求实现,bing使用bing java sdk实现。bing搜索需要一个微软的appid,可以用我的,也可以自己去免费申请。bing会限制每个appid的每天查询次数。 google和baidu的结果很好,bing的服务器好像常常连不上去。。。 google实现的时候尤其需要一个user-agent域,可以直接用我的firefox9.0设置也可以自己查找相应的user agent字符串替换(在HtmlDownloader.java中)。

基于Java实现本地数据搜索引擎(附带简易交互界面)

深圳大学信息检索课程作业。

weixin_52828997的博客 2043

使用java实现搜索引擎系统(含数据库).rar

经过对搜索引擎的研究同时与Lucene自身的特性相结合,搜索引擎的设计与实现需要实现的功能阐述如下: (1)支持桌面文件搜索,格式包括txt、doc、xls和ppt; (2)支持分词查询 (3)支持全文搜索 (4)能够高亮显示搜索关键字 (5)显示查询所用的时间 (6)显示搜索历史、过滤关键字

UVM概述及uvm_component和uvm_object(一)

UVM:Universal Verification Methodology(通用验证方法学) UVM:是建立在systemverilog平台上的一个库,提供了一系列的接口,让我们能够更方便的进行验证。验证平台组成: Driver:用来把不同的激励施加给DUT; Monitor:用来检测DUT的输出; Scoreboard:专门用来比较期望值与monitor检测到的DUT输出; Refer

南国之邱 1万+

Java项目---搜索引擎

Java搜索引擎项目

baijaiyu的博客 2349

STK中的传感器、雷达、发射机、接收机、天线

本文根据STK手册介绍了传感器、雷达、发射机、接收机、天线等对象的基本属性,简略分析了它们的不同之处。

wangyulj的专栏 1万+

Java实现简单的搜索引擎

Java实现简单的搜索引擎

AiFlutter的博客 1655

保姆级教程:用GlobleLand30数据+GTB3.3软件,一步步搞定MSPA景观格局分析

本文提供GlobleLand30数据结合GTB3.3软件进行MSPA景观格局分析的保姆级教程,涵盖数据预处理、软件操作、结果解读全流程,特别针对零基础用户常见问题提供解决方案,助力研究者高效完成景观生态学分析。

weixin_26757925的博客 450

【Agent从入门到实践】40 容错优化:异常处理、重试机制、降级策略

各位小伙伴,咱们的多Agent框架一路优化到现在,决策快、执行效率高、资源用得省,看似啥都行,但只要一遇到网络波动、工具故障、数据异常调用web_search工具时网络超时,整个检索任务直接失败,写作Agent没数据可用向量库连接异常,向量检索直接崩掉,依赖检索结果的Agent全趴窝单个Agent执行出错,整个并行任务流程直接中断,前功尽弃高并发下部分工具调用失败,框架没有备用方案,只能返回任务失败说白了,咱们之前的框架只有正常执行逻辑,没有异常兜底逻辑。

人工智能AI技术 910

毕业设计之 --- 基于Java的搜索引擎系统实现

文章目录前言1 什么是搜索引擎如何实现一个搜索引擎搜索引擎原理搜索器索引器检索器用户接口系统实现部分实现代码完整工程 前言 今天学长在这里向大家分享一个非常优质的毕设项目:基于Java的搜索引擎系统实现。 搜索引擎(Search Engine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。 1 什么是搜

HUXINY的博客 4323

海上风电经柔性直流送出系统的阻抗建模与稳定性分析

摘要 本文针对海上风电经柔性直流送出系统的稳定性问题,提出了一种基于阻抗建模的分析方法。研究建立了直驱永磁同步发电机(PMSG)的序阻抗解析模型和模块化多电平换流器(MMC)的交流侧小信号阻抗模型,通过Matlab/Simulink平台实现了完整的仿真验证系统。采用谐波线性化原理和端口阻抗分析法,揭示了风电机组与柔直换流器之间的阻抗匹配特性对系统稳定性的影响规律。研究结果表明,控制参数设置会显著改变系统阻抗特性,进而影响稳定裕度。文中提出的阻抗建模方法为分析海上风电柔直送出系统的宽频振荡问题提供了有效工具,

huanghm88的专栏 232

用Java实现利用搜索引擎收集网址的程序

本文采用Java语言写成,以google和百度搜索引擎为对象。 我们要利用google、百度搜索引擎的搜索规则中的两条,关键字搜索和inurl搜索。什么是inurl搜索,就是你所要搜索的网址中本身带有的关键字,比如http://www.xxx.com/post.asp ,这个网址就含有post.asp这样的关键字,在搜索引擎中填写规则是 inurl:post.asp,这是收集网址的关键,因

713

从入门到精通:LabVIEW全攻略

本文为 LabVIEW 全攻略指南,系统梳理从基础到高级的核心知识与应用技巧。首先介绍 LabVIEW 的图形化编程特性、数据流运行机制及开发环境,通过创建与调试 VI 的实操演示帮助入门。接着深入解析程序结构(循环、分支、顺序)、数据类型(数组、簇、波形)及图形显示技术(Graph、XY Graph 等)的原理与应用场景。高级部分涵盖多线程编程、错误处理、硬件通信及第三方工具集成等进阶技术,并针对程序逻辑、硬件适配、性能优化等常见问题提供排查与解决方案。

邓邓子的博客 3579

苏宁易购手机行情比价系统:构建一个完整的Python爬虫实战指南

在当今数字化时代,智能手机已成为人们生活中不可或缺的一部分。随着各大手机品牌每年推出多款新品,消费者面临着越来越多的选择。然而,不同电商平台、不同时间段的价格波动使得消费者很难把握最佳购买时机。苏宁易购作为国内领先的电商平台之一,拥有丰富的手机商品信息和价格数据。本文将带领读者构建一个完整的苏宁易购手机行情比价系统,帮助消费者实时掌握手机价格动态。

2201_76125261的博客 207
上一篇: 实战体会Java的多线程编程
下一篇: 用Java+JDOM写的RSS阅读软件
ambitiontan
博客等级 码龄21年 33粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值