Jsoup解析html的一些使用技巧

前段时间确定了毕设,每天晚上花时间完善功能。
考虑到要异步解析html抓取数据,jsoup——json的使用模式是最方便了,html代码的提取方式不要太花式太强大~╮(╯▽╰)╭~

使用期间jsoup自带的解析url数据有点慢,异步线程如下:

private Document doc;
  
  @Override
  protected Document doInBackground(String... params) {
    
    Date startdate=new Date();
    try {
     doc=Jsoup.connect(params[0]).timeout(5000).get();
    } catch (IOException e) {
     e.printStackTrace();
    }
    Date enddate=new Date();
    Long time=enddate.getTime()-startdate.getTime();  
          Log.e("使用连接耗时==",""+time); 
    
   return doc;
  }

测试:


个人感觉可能是api太繁冗,后来想了一下还是自己写http解析:

private String strAll;
		
		@Override
		protected String doInBackground(String... params) {
				
				Date startdate=new Date();
				strAll = new HttpURLconn().httpURLconn(url);
				Date enddate=new Date();
				Long time=enddate.getTime()-startdate.getTime();  
		        Log.e("使用连接耗时==",""+time); 
				
			return strAll;
		}

异步改为~

private String strAll;
		
		@Override
		protected String doInBackground(String... params) {
				
				Date startdate=new Date();
				strAll = new HttpURLconn().httpURLconn(url);
				Date enddate=new Date();
				Long time=enddate.getTime()-startdate.getTime();  
		        Log.e("使用连接耗时==",""+time); 
				
			return strAll;
		}

测试:

好吧,白天上班一不小心还得加班...晚上补功能实在没精力去深究了,这里记录一下有时间了要得到why,能有大神点明一下就更好了~还有jsoup可一行代码往服务器post数据,挺方便,有兴趣的哥们可以深入研究~


继续~得到解析的html代码,转为Document,规范、补全解析格式。

Document doc =Jsoup.parse(result);


中文开发指南:http://www.open-open.com/jsoup/


这里用www.ip138.com里的身份验证做例子,

异步获取html代码结束

		@Override
		protected void onPostExecute(String result) {
			if(result!=null){
				Document doc2 =Jsoup.parse(result);
				//选择html中的第四个table标签里的所有<tr>标签对
				Elements select = doc2.select("table").eq(4).select("tr");
				List<String> list = new ArrayList<String>();
				for (Element element : select) {
					String text = element.getElementsByTag("td").text();
					Log.e("text", ""+text);
				}
//				Log.e("if_out","list0:"+list.get(0));
//				Log.e("if_out","list1:"+list.get(1));
//				Log.e("if_out","list2:"+list.get(3));
			}
			
		}

得到


随意网上找的一个身份证号,可以看到第三个td对是空的,这在取数据的时候要注意,最好每一行都能打印出来~


别忘记访问网络的权限~

最后,异步线程的学习资料网上很多,推荐郭神的良心博客:http://blog.csdn.net/guolin_blog/article/details/11711405


记录,共勉!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值