不断尝试,发现越来越多有趣的东西,刚刚接触Jsoup感觉比正则表达式用起来方便,但也有局限只适用HTML的解析。
不能尝试运用到四则运算中(工作室刚开始联系的小程序)。
在原来写的HttpClient获取网页内容的基础上,增加对网页的解析。
下面是实现对网页中电影分类的链接信息的爬取。
import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main { public static void main(String[] args) throws IOException{ try { //创建client实例 HttpClient client= HttpClients.createDefault(); //创建httpget实例 HttpGet httpGet=new HttpGet("http://www.btba.com.cn"); //执行 get请求 HttpResponse response=client.execute(httpGet); //返回获取实体 HttpEntity entity=response.getEntity(); //获取网页内容,指定编码 String web= EntityUtils.toString(entity,"UTF-8"); //输出网页 System.out.println(web); Document doc= Jsoup.parse(web); Elements links=doc.select("a[href~=http://www.btba.com.cn/type/*]");//选择器,选取特征信息 String webs=null; for (Element link:links) { webs=link.attr("abs:href").toString(); System.out.println(webs+" "+link.text());//输出特征信息 } } catch (IOException e) { e.printStackTrace(); } } }
下一步,将完成电影链接及电影相关信息的爬取。