`
Jelen_123
  • 浏览: 68915 次
  • 性别: 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上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    百度翻译源码java-pocketTranslator:自动识别英文或日文单词并实时翻译成中文的程序

    当我遇到一些不熟悉的词时,我不得不去百度(中文谷歌)进行翻译。 我发现复制粘贴单词,打开浏览器,在英语和日语之间切换语言真的很麻烦。 所以,我创建了这个小程序来帮助我快速阅读文档,只知道单词的基本含义。...

    Android集成主流优秀第三方组件框架

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类...

    本科毕业设计开题报告(校园初恋网的设计与实现)

    借助百度、谷歌等大型搜索引擎和各种国内外信息资料,目前国内外对该专用网络平台的研究和开发涉及不多。 三、课题的基本内容 校园初恋网是大学生情感分享和情感交流的专用的小型社交网络,安全靠谱。 本系统按功能...

    集成目前Android主流优秀第三方组件

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    集成安卓主流优秀第三方组件框架.zip

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    除在保密期内的保密论文和在技术保护期限内的论文外,允许论文被查阅和借阅,可以公布(包括以电子信息形式刊登)论文的全部内容或中、英文摘要等部分内容。论文的公布(包括以电子信息形式刊登)授权东南大学研究生...

    输入自动提示搜索提示功能的[removed]sugggestion.js

    代码如下: /** * 功能:该js文件中的代码实现了[输入自动搜索提示]功能,如百度、google搜索框中输入一些字符会以下拉列表形式给出一些提示,提高了用户体验 * 使用说明:参见suggestions.txt文件 * Author:sunfei(孙飞...

    Python入门网络爬虫之精华版

    这里针对华尔街见闻进行并行抓取的实验对比:Python多进程抓取 与 Java单线程和多线程抓取 相关参考:关于Python和Java的多进程多线程计算方法对比 6. 对于Ajax请求的处理 对于“加载更多”情况,使用Ajax来传输很...

    RSS案例视频,RSS阅读器

    RSS获取信息的模式与加入邮件列表(如电子杂志和新闻邮件)获取信息有一定的相似之处,也就是可以不必登录各个提供信息的网站而通过客户端浏览方式(称为“RSS阅读器”)或者在线RSS阅读方式这些内容。例如,通过一...

    飘花养生网网站源码 v2.0

    网站地图系统强大的网站地图可以方便的生成google,百度,rss,有利于搜索引擎的快速收录,在最短的时间提升贵站的流量! 广告管理系统先进的广告管理系统打破传统模式,完全可以在线自定义广告内容,更方便添加! ...

    SimplifyReader:SkillCollege开源项目,基本遵守MVP设计模式

    Google,百度,调试获取日志,我能说的只有这么多。 功能:列表页使用自定义的ListView(自动加载更多)显示新闻列表,详情使用的是WebView加载,支持滑动返回。对于多图 新闻的处理,使用的和主流新闻客户端类似,...

    基于php编写的图床工具源码.zip

    - 目前支持的图床:七牛、腾讯、网易、百度、京东、阿里、又拍、sm.ms、Imgur、Ucloud、青云、Nextcloud、Github、Gitee(码云)、Cloudinary、Chevereto、Minio、Aws s3、金山、华为、DropBox、OneDrive、GoogleDrive...

Global site tag (gtag.js) - Google Analytics