利用HttpURLConnection抓取网页取名
闲来无事,利用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 + " 结束了 ....." );
}
}
}
|
http://blog.csdn.net/z3h/archive/2008/01/16/2047420.aspx
利用HttpURLConnection抓取网页取名相关推荐
- matlab抓取网页信息,如何利用Matlab抓取网页数据
如何利用Matlab抓取网页数据 2019-01-01 %朋友需要做金融方面的分析,要求从网站上下载大量的数据,一个一个复制粘贴太费事.我写了一个简单的网络爬虫,主要用到正则表达式,可以自动下载网页源 ...
- 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]
利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数 ...
- 抓取html 中文乱码,利用代码抓取网页数据,出现中文乱码问题
嗯,多谢你解答.试验了,出现了另外一种乱码,自己又再次琢磨了http://club.excelhome.net/thread-893760-1-1.html这个帖子的第一帖,问题解决了,原因是'因为X ...
- 利用python抓取网页各种类型内容(静态、动态)
声明: 本实验的操作系统是ubuntu,python 2.X Code-1:抓取静态的title数据(无需登录用户) 获取淘宝主页的页面静态数据 url:http://www.taoba ...
- 利用python抓取网页上的数独,并用回溯法破解
这里抓取的是https://www.oubk.com/上不用登陆就能查看的数独 以下是抓取数独的代码: class Crawl_shudu(object):def __init__(self,url) ...
- 利用Xpath抓取网页推送百度,功成名就触手可及
前言: 我将自己网站 is-hash.com 的几个网页全部主动推送给了度娘(curl推送) 推送过程 其实百度curl推送并不是个难事,就是将要提交的链接按照每行一条的格式写入一个文本文件中,命名此 ...
- 利用Java抓取网页数据
// // MJViewController.m#import "MJViewController.h"@interface MJViewController ()@end@imp ...
- 使用Java HttpURLConnection抓取网页内容(一)限制返回的网页大小
最近接到一个新的需求,要求给定一个url地址,获取该网页的title和图标地址,大致的思路是使用HttpUrlConnection抓取网页的源码,然后使用正则表达式匹配网页的标题和图标. 开发测试的过 ...
- Python利用bs4批量抓取网页图片并下载保存至本地
Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...
最新文章
- C语言二进制转换为十六进制(附完整源码)
- Android NFS文件系统挂载遇到的问题解决方法
- pymysql(part3)--pymysql常用函数
- jpg灰度化 python_python开发之HighGUI上位机开发(一)
- 支付宝“跑路”,一亿用户服务彻底关停!
- mschart走势图 vc_在VC++中使用MSChart表格控件(小结)
- 极力推荐--不错的delphi 学习网站与论坛---有待补充
- 数据库的部分依赖、完全依赖、传递依赖
- 计算机网络课制作双绞线实验,计算机网络实验报告(双绞线).doc
- 《蜂鸟摄影学院单反摄影宝典》读书笔记
- 关于微信小程序·小程序云开发字段搜索
- 安卓软件定做-华为Mate7手机高配版和标准版的区别
- 提取最后一个星号后的数字
- 《迷途深渊》隐私声明
- 一、fMRI介绍及实验设计
- 每周一文(二)阿里TDM模型
- App Inventor 四字节转单精度浮点数
- Android 高德地图 自己位置的显示与点地图上任意一点的坐标
- system.img解包打包工具
- 给word添加书签目录,也就是超链接