闲来无事,利用Java 的HttpURLConnection,使用多线程来抓取网页,计算名字的分数。

仅供娱乐。

程序如下

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.log4j.Logger;
public class XingMing {
  static final Logger log = Logger.getLogger(XingMing. class );
  public static String read(String urlStr) {
    try {
     URL url = new URL(urlStr);
     HttpURLConnection connection = (HttpURLConnection) url
         .openConnection();
     connection.connect();
     InputStream in = connection.getInputStream();
     BufferedReader read = new BufferedReader( new InputStreamReader(in));
     StringBuffer buf = new StringBuffer();
     String line = null ;
      while ((line = read.readLine()) != null ) {
       buf.append(line);
     }
      return buf.toString();
   } catch (MalformedURLException e) {
      return null ;
   } catch (IOException e) {
      return null ;
   }
 }
  public static String find(String str, String beginStr, String endStr) {
    final int length = beginStr.length();
    int index = str.indexOf(beginStr);
   String result = null ;
    if (index != -1) {
      int index2 = str.indexOf(endStr, index + length);
      if (index2 != -1) {
       result = str.substring(index + beginStr.length(), index2);
     }
   }
    return result;
 }
  public static String findName(String source, String name) {
    // value= 我的姓名『 XX 』的分析:
    return find(source, "value= 我的姓名『 " , " 』的分析 " );
 }
  public static String findScore(String source, String name) {
    // <font size=3> 姓名评分: </font><font color=0000ff size=5FONT-SIZE: 10pt;">
    // BT, 楷体 ">99.5</font>
    return find(
       source,
        "<font size=3> 姓名评分: </font><font color=0000ff size=5 BT, 楷体 /">" ,
        "</font>" );
 }
  public static void main(String[] args) throws IOException {
    final char firstChar = ' 一 ' ;
    final char lastChar = ' 龥 ' ;
    // 最大开启 100 个线程,可以加快查询速度 .
    int maxThread = 100;
    int step = (lastChar - firstChar) / maxThread;
    for ( int i = 0; i < maxThread; i++) {
      char start = ( char ) (firstChar + i * step);
      char end = ( char ) (firstChar + i * step + step - 1);
     System. out .println( " 开启 " + (i + 1) + " 处理 :" + start + "-" + end
         + ( char ) (end + 1));
      new CallThread(start, end).start();
   }
 }
  static class CallThread extends Thread {
    private char start ;
    private char end ;
    private String info ;
   CallThread( char start, char end) {
      this . start = start;
      this . end = end;
      this . info = this . start + "-" + this . end ;
   }
    public void run() {
      // 姓
      final char youname1 = ' 赵 ' ;
      final String url = "http://www.xingming.net/cmjg-mz.asp?sex= 男 &youname1="
         + youname1 + "&youname2=" ;
     String youname2;
     String webinfo = null ;
      for ( char i = start ; i <= end ; i++, webinfo = null ) {
        // 名字规则自己取吧 .
        // youname2 = " 良 " + i;
        // youname2 = "" + i + i;
       youname2 = i + " 敏 " ;
        for ( int j = 0; j < 5 && webinfo == null ; j++) {
         webinfo = XingMing.read(url + youname2);
       }
        if (webinfo == null ) {
          log .warn( " 获取名字 [" + youname1 + youname2 + "] 失败 " );
          continue ;
       }
       String webName = XingMing.findName(webinfo, "[" + youname2
           + "]" );
       String webScore = XingMing.findScore(webinfo, "[" + youname2
           + "]" );
        try {
          if (Float.parseFloat(webScore) >= 90) {
           System. out .println(youname2 + ":" + webName + ":"
               + webScore);
         }
       } catch (Exception e) {
       }
        log .info( this . info + ":" + webName + ":" + webScore);
        if ((i - start ) % 100 == 0) {
         System. out .println( this . info + " 处理了 " + (i - start ) + " 个 " );
       }
     }
     System. out .println( this . info + " 结束了 ....." );
   }
 }
}
最新程序:
最终版宝宝取名程序,java版,我家宝宝名字已经确定。  

http://blog.csdn.net/z3h/archive/2008/01/16/2047420.aspx

利用HttpURLConnection抓取网页取名相关推荐

  1. matlab抓取网页信息,如何利用Matlab抓取网页数据

    如何利用Matlab抓取网页数据 2019-01-01 %朋友需要做金融方面的分析,要求从网站上下载大量的数据,一个一个复制粘贴太费事.我写了一个简单的网络爬虫,主要用到正则表达式,可以自动下载网页源 ...

  2. 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]

    利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数 ...

  3. 抓取html 中文乱码,利用代码抓取网页数据,出现中文乱码问题

    嗯,多谢你解答.试验了,出现了另外一种乱码,自己又再次琢磨了http://club.excelhome.net/thread-893760-1-1.html这个帖子的第一帖,问题解决了,原因是'因为X ...

  4. 利用python抓取网页各种类型内容(静态、动态)

    声明:        本实验的操作系统是ubuntu,python 2.X Code-1:抓取静态的title数据(无需登录用户) 获取淘宝主页的页面静态数据 url:http://www.taoba ...

  5. 利用python抓取网页上的数独,并用回溯法破解

    这里抓取的是https://www.oubk.com/上不用登陆就能查看的数独 以下是抓取数独的代码: class Crawl_shudu(object):def __init__(self,url) ...

  6. 利用Xpath抓取网页推送百度,功成名就触手可及

    前言: 我将自己网站 is-hash.com 的几个网页全部主动推送给了度娘(curl推送) 推送过程 其实百度curl推送并不是个难事,就是将要提交的链接按照每行一条的格式写入一个文本文件中,命名此 ...

  7. 利用Java抓取网页数据

    // // MJViewController.m#import "MJViewController.h"@interface MJViewController ()@end@imp ...

  8. 使用Java HttpURLConnection抓取网页内容(一)限制返回的网页大小

    最近接到一个新的需求,要求给定一个url地址,获取该网页的title和图标地址,大致的思路是使用HttpUrlConnection抓取网页的源码,然后使用正则表达式匹配网页的标题和图标. 开发测试的过 ...

  9. Python利用bs4批量抓取网页图片并下载保存至本地

    Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...

最新文章

  1. C语言二进制转换为十六进制(附完整源码)
  2. Android NFS文件系统挂载遇到的问题解决方法
  3. pymysql(part3)--pymysql常用函数
  4. jpg灰度化 python_python开发之HighGUI上位机开发(一)
  5. 支付宝“跑路”,一亿用户服务彻底关停!
  6. mschart走势图 vc_在VC++中使用MSChart表格控件(小结)
  7. 极力推荐--不错的delphi 学习网站与论坛---有待补充
  8. 数据库的部分依赖、完全依赖、传递依赖
  9. 计算机网络课制作双绞线实验,计算机网络实验报告(双绞线).doc
  10. 《蜂鸟摄影学院单反摄影宝典》读书笔记
  11. 关于微信小程序·小程序云开发字段搜索
  12. 安卓软件定做-华为Mate7手机高配版和标准版的区别
  13. 提取最后一个星号后的数字
  14. 《迷途深渊》隐私声明
  15. 一、fMRI介绍及实验设计
  16. 每周一文(二)阿里TDM模型
  17. App Inventor 四字节转单精度浮点数
  18. Android 高德地图 自己位置的显示与点地图上任意一点的坐标
  19. system.img解包打包工具
  20. 给word添加书签目录,也就是超链接

热门文章

  1. 90后程序员已经出家了
  2. 计算机界面方向了怎么办,Windows电脑屏幕倒过来了怎么办?教你快速翻转屏幕...
  3. 领导离职,我是否应该跟领导一起走
  4. SpringBoot2.X 中文配置参考指南
  5. springboot 2 application配置
  6. 10N60-ASEMI高压MOS管10N60
  7. mysql 横向排列,mysql横向转纵向、纵向转横向排列
  8. vuex的辅助函数:mapState和mapGetters
  9. 中学生应该学会使用计算机作文,初中生学会选择的作文三篇
  10. windows下在内存中运行程序