`
Jelen_123
  • 浏览: 70556 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java实现自动获取词在百度和google的结果条数

阅读更多
前两天由于导师的布置了一项任务,要找8千多个词中的100个流行词,刚开始还以为直接比较搜索引擎的结果条数就可以了,用程序实现了这个功能,后来才发现这个方法不好用,因为存在了词的歧义性,而且有些词会被拆分,出现的根本就不是那个词,后来只能人工方法搞掂了,但程序还在,还在贴出来吧,百度和google的都收集起来了。


package com.cn.words;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;

import edu.ccnu.nlp.util.RegexUtil;

public class Getwords {
final static Pattern pattern = Pattern.compile("[0-9]");//正则提取搜索结果中的数字

//读取文本的关键词
public String[] readTxt() throws IOException
{
String[] words = new String[9000];
int i = 0;
FileReader fr = new FileReader("H:/mojiaqin.txt");
BufferedReader br = new BufferedReader(fr);
while(br.ready())
{
words[i] = br.readLine();
//System.out.println(br.readLine());
i++;
}
return words;
}
//将搜索结果写到文本中
public void writeTxt(String[] words,String[] times) throws IOException
{
FileWriter fw = new FileWriter("H:/mojiaqin_1.txt");
BufferedWriter bw = new BufferedWriter(fw);
for(int i = 0;i <words.length&&i<times.length;i++)
{
if(words[i]!=null&&times[i]!=null)
{
bw.write(words[i]);
bw.write(",");
bw.write(times[i]);
bw.newLine();
}
else
break;
}
bw.close();
fw.close();
}

//google获取链接
public String LinkGoogle(String word) throws Exception, Exception, Exception
{
final WebClient  webclient = new WebClient();
final HtmlPage htmlpage = webclient.getPage("http://www.google.com.hk/webhp?hl=zh-CN");//中国去网址
webclient.setCssEnabled(false);
webclient.setJavaScriptEnabled(false);
//System.out.println(htmlpage.getTitleText());
final HtmlForm form = htmlpage.getFormByName("f");  //获取表单
//System.out.println(form.asText());
final HtmlSubmitInput button = form.getInputByValue("Google 搜索");//搜索按钮
final HtmlTextInput textField = form.getInputByName("q");//搜索的文本框
textField.setValueAttribute(word);   //设置搜索关键字
final HtmlPage page2 = button.click();   //点击链接
List<?> divs = (List<?>) page2.getByXPath("//div"); //获取搜索结果页面的层
HtmlDivision div =null;
div = (HtmlDivision) divs.get(16);      //获取返回搜索总条数的层
String str = div.asText();
//System.out.println(":"+pickUp(str));
return pickUp(str);
//System.out.println(div.asText());
}

//用百度搜索
public String  LinkBaidu(String word) throws Exception, Exception, Exception
{
final WebClient  webclient = new WebClient();
final HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/");

webclient.setCssEnabled(false);
webclient.setJavaScriptEnabled(false);
//System.out.println(htmlpage.getTitleText());
final HtmlForm form = htmlpage.getFormByName("f");
final HtmlSubmitInput button = form.getInputByValue("百度一下");
final HtmlTextInput textField = form.getInputByName("wd");
textField.setValueAttribute(word);
final HtmlPage page2 = button.click();
//System.out.println(page2.asText());

HtmlSpan span = (HtmlSpan) page2.getByXPath("//span[@class='nums']").get(0);
String str = span.asText();
// pickUp(str);
webclient.closeAllWindows();
return pickUp(str);
}
//提取数字
public static String pickUp(String text) {
    Matcher matcher = pattern.matcher(text);
    StringBuffer bf = new StringBuffer(64);
    while (matcher.find()) {
      bf.append(matcher.group()).append("");
    }
    return bf.toString();
  }
public static void main(String[] args) throws IOException
{
Getwords getwords = new Getwords();
String[] words = getwords.readTxt();
String[] times = new String[9000];
String str;
//words.writeTxt(w);
try {
for(int i = 0;i<words.length;i++)
{
if(words[i]!= null)
{
str = getwords.LinkGoogle(words[i]);
times[i] = str;
System.out.println(words[i]+","+str);
}
else
break;
}
System.out.println("搜索完毕!");
getwords.writeTxt(words,times);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

分享到:
评论

相关推荐

    java获取谷歌百度天气预报

    本项目中,提供了一个包含HttpClient库的Java程序,能够有效地从谷歌和百度等天气服务提供商获取实时天气信息。下面我们将深入探讨相关知识点。 1. **HttpClient库**:HttpClient是Apache的一个开源项目,它提供了...

    仿谷歌百度实现输入自动补全功能

    本项目旨在仿照谷歌和百度的样式,实现一个具有高效、易用的输入自动补全功能。 首先,我们要理解自动补全的基本原理。该功能通常基于用户在输入框中键入的部分字符,快速提供可能的匹配项列表。这个过程涉及两个...

    AJAX实现百度谷歌搜索自动填充

    以上就是使用AJAX和AutoCompleteExtender实现百度谷歌搜索自动填充的基本过程。通过调整服务端方法和控件的配置,你可以定制化自动填充的功能,比如根据用户的搜索历史提供个性化建议,或者从数据库中实时获取数据。...

    Java爬取 百度图片&Google图片&Bing图片

    在本项目中,我们主要探讨的是如何使用Java编程语言来实现对百度、Google以及Bing这三个主流搜索引擎的图片抓取功能。这个项目名为"ImageCrawler",它可能是一个简单的命令行工具,用于批量下载指定关键词的网络图片...

    在Java中使用Aiax技术实现自动完成功能

    自动完成功能作为一种提高用户体验的有效手段,在各大搜索引擎如Google、百度以及各类门户站点中得到了广泛应用。本文将详细介绍如何在Java环境下运用Ajax技术来实现这一功能。 #### 二、Ajax技术简介 Ajax...

    改进版 jquery 仿百度谷歌自动补全输入(支持中文)

    标题“改进版 jquery 仿百度谷歌自动补全输入(支持中文)”涉及到的是一个基于jQuery的前端开发技术,旨在实现类似百度和谷歌搜索框的自动补全功能,而且这一版本特别优化了对中文字符的支持。在网页交互设计中,...

    JSP+Ajax+Servlet 自动完成类似谷歌百度搜索

    本项目的核心是利用JSP、Ajax和Servlet技术实现一个自动完成的搜索功能,类似于谷歌或百度的搜索建议。这种功能在用户输入查询词时,能够在后台实时获取匹配的建议结果,提升用户的搜索体验。以下是这个项目涉及到的...

    ajax自动补全 类似于google百度的搜索引擎

    在实现类似Google和百度的搜索引擎功能时,Ajax自动补全发挥着至关重要的作用。它提供了用户友好的交互体验,让用户在输入搜索关键词时能够实时看到建议的搜索项,极大地提高了搜索效率。 **一、Ajax基础** 1. **...

    自动爬取百度谷歌图片

    标题 "自动爬取百度谷歌图片" 涉及到的是使用编程技术实现自动化抓取网络上的图片资源,主要集中在搜索引擎如百度和谷歌上。这项技术通常由爬虫程序完成,爬虫是一种自动化浏览互联网并抓取信息的软件。在本案例中,...

    ( java+jquerygoogle百度搜索自动提示效果.

    该主题涉及到使用Java和jQuery实现类似Google或百度搜索框的自动提示效果。这个功能常见于许多网站的搜索框,当用户输入关键词时,系统会实时提供相关的搜索建议。以下是相关知识点的详细说明: 1. **中文参数处理*...

    百度地图移动获取位置,自动定位.zip

    "百度地图移动获取位置,自动定位.zip"这个压缩包很可能是包含了一个示例项目,用于展示如何在Android应用程序中集成百度地图API并实现自动定位功能。下面我们将深入探讨Android中位置服务的原理、百度地图SDK的使用...

    Python调用谷歌浏览器打开百度

    在IT行业中,自动化测试和网页操作常常需要用到编程语言与浏览器的交互,而Python结合Selenium库就是实现这一目标的有效工具。本程序的核心是利用Python调用谷歌浏览器(Chrome)并执行自动化任务,如搜索特定内容。...

    java解析DWG文件为json使用superMap

    首先,确保你已经下载了SuperMap iObjects Java的相关组件,可以从官方支持网站或提供的百度云链接获取。安装JDK 1.6.0或更高版本,因为这是运行Eclipse和SuperMap iObjects Java的最低需求。 **开发环境配置** 1....

    Android仿百度谷歌自动提示——AutoCompleteTextView

    本文将详细介绍如何在Android中仿照百度和谷歌的自动提示功能,利用`AutoCompleteTextView`控件来实现这一功能。 `AutoCompleteTextView`是Android SDK中的一个视图组件,它继承自`EditText`,增加了自动补全的功能...

    百度免费天气查询

    在这个“百度免费天气查询”的项目中,开发者利用了百度提供的免费天气查询API,结合Volley网络请求框架和Gson库,实现了一个简洁而实用的功能。接下来,我们将详细讨论这个项目中涉及的技术点。 1. **百度天气API*...

    基于spring boot实现根据经纬度坐标返回所在行政区域

    在IT行业中,Spring Boot是一个非常流行的Java开发框架,它简化了构建微服务和Web应用程序的过程。本项目聚焦于一个特定的应用场景:通过经纬度坐标来确定所在行政区域。这一功能在许多领域都有广泛的应用,例如地图...

    安卓GPS地图导航定位指南相关-百度地图移动获取位置自动定位.zip

    在"JavaApk源码说明.txt"中,可能包含的是一个使用以上API实现自动定位功能的安卓应用的源代码说明。源码可能会涉及以下几个关键类: - **MainActivity**:通常包含初始化定位服务的逻辑,如设置定位请求、注册位置...

    基于Trie树模仿谷歌百度搜索框提示

    这个项目“基于Trie树模仿谷歌百度搜索框提示”旨在实现类似谷歌和百度搜索引擎的自动补全功能。我们将深入探讨Trie树数据结构以及如何使用Java来构建这样的系统。 首先,我们要理解什么是Trie树,也被称为前缀树或...

    张孝祥全 java 全集

    - **实践案例**:利用JavaMail API实现自动发送邮件的功能。 ### 四、联系方式提供 - **联系方式**:为了获取更多关于这些文档的信息或者完整版资料,可以通过提供的电子邮箱(lvgeuuuooo@163.com)进行联系,作者...

Global site tag (gtag.js) - Google Analytics