新闻消息的爬取-jsoup

新闻消息的爬取-jsoup

 

    业务场景:新闻消息爬取,半自动半人工。

 

    新闻来源几个固定网站,人工则是工作人员在网上看到一个需要的消息,直接拷贝网址,然后根据网址自动提取。

 

    消息内容:标题,简介,网址,封面图片

 

  采用开发插件 jsoup,感觉是最方便的简析工具,比htmlparser等好用得多

 

一.Jsoup开发参考资料

1.  中文api参考  http://www.open-open.com/jsoup/

2.  参考文档          自行百度

 

二.使用方法

 

1. get方法获取

Document doc = Jsoup.connect("http://www.XXX.com").get();

String title = doc.title();

 

2. post方法获取

Document doc = Jsoup.connect("http://www.XXX.com")

  .data("query", "Java")   //请求参数

  .header("Connection", "close") //设置header

  .cookie("auth", "token") //设置cookie

  .timeout(3000)           //设置连接超时时间

  .post();                 //使用POST方法访问URL

 

3. 循环获取图片元素

Elements pngs = doc.select("img[src$=.png]");//所有引用png图片的元素

for (Element png : pngs ) {

  String src= link.attr("src");  

}

 

4. 添加属性

doc.select("div.comments a").addClass("mylinkclass");

//为所有链接增加 class=mylinkclass 属性

 

三.问题合集

 

1. 中文问题

(1)url路径带中文

中文调用getBytes("utf-8") 进行utf-8编码后再访问

 

(2)html内容中文乱码

Document document = Jsoup.parse(new URL(url).openStream(), "GBK", url);

//GBKUTF-8

 

2. 获取 title 时中文网址返回英文说明

例如访问这个网址https://pomotodo.com/ ,返回的是英文title

Document get时加上这句 header("Accept-Language", "zh-cn,zh;q=0.5")

 

3.图片路径问题

(1) // 开头,直接添加 http: 即可,这是默认的http协议

(2) /  开头,图片在根目录下

3../ 图片在相对路径目录下

你可能感兴趣的:(java开发)