今天下午闲来无事,就在iteye上泡着,看到了一篇关于用httpclient获取手机号归属地的一片博客。想到我正好需要一些职位名称,于是动手自己写了一个小程序来获取自己想要的数据。代码如下:
通过httpclient获得到页面的源代码之后,用Jsoup来解析html(这个是临时在网上查到的,不太会用),最后将数据保存到了文本中。
遇到的问题:
1.解析html,以前没有解析过,Jsoup也是临阵磨枪,得到了自己想要的结果还不错,下来再研究一下。
2.写入文件的时候,不能一行一行的写,没有想到用换行符,百度了一下。
public static void main(String[] args) {
String url = "http://sou.zhaopin.com/jobtypelist.html";
getHttpClient(url);
}
private static void getHttpClient(String url) {
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
//创建GET方法的实例
GetMethod getMethod = new GetMethod(url);
//使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
try {
//执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ getMethod.getStatusLine());
}
//读取内容
byte[] responseBody = getMethod.getResponseBody();
//处理内容
parseHTML(new String(responseBody));
} catch (HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
//发生网络异常
e.printStackTrace();
} finally {
//释放连接
getMethod.releaseConnection();
}
}
private static void saveFile(String txt){
String filePath = "F:/category.txt";
BufferedWriter out = null;
if(txt != null){
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath,true),"UTF-8"));
//一行一行的写入
out.write(txt + "\t\n");
out.flush();
}catch(Exception e){
e.printStackTrace();
} finally {
if (out != null)
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void parseHTML(String content){
Document doc = Jsoup.parse(content);
Elements categories = doc.select("li a");
for(int i=0; i<categories.size();i++){
String txt = categories.get(i).text();
saveFile(txt);
}
}
通过httpclient获得到页面的源代码之后,用Jsoup来解析html(这个是临时在网上查到的,不太会用),最后将数据保存到了文本中。
遇到的问题:
1.解析html,以前没有解析过,Jsoup也是临阵磨枪,得到了自己想要的结果还不错,下来再研究一下。
2.写入文件的时候,不能一行一行的写,没有想到用换行符,百度了一下。