list的add方法 ,foreach循环添加map---List.add(map)(通过一个java爬虫案例说明)

案例:一个java爬虫程序

1.案例说明

做了一个爬取某程的旅游网站的java程序,程序主要爬取安庆酒店的某些相关信息。
材料准备:jsoup-1.8.1.jar(需要此架包的联系博主,有任何问题欢迎随时咨询
直接上代码:

package util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class CopyOfDataDownUtil {
   

    /**
     * 
     * @param url
     * @param enconding
     * @return
     */
    public static String getHtmlResourceByUrl(String url,String enconding){
        StringBuffer buffer=new StringBuffer();
        InputStreamReader isr=null;
        try {
            //建立网络链接
            URL urlOb=new URL(url);
            //打开网络链接
            URLConnection uc=urlOb.openConnection();
            //建立文件输入流
            isr=new InputStreamReader(uc.getInputStream(),enconding);
            //缓冲
            BufferedReader reader=new BufferedReader(isr);
            //建立临时文件
            String line=null;
            //开始读取源代码
            while(((line=reader.readLine())!=null)){
            //将临时文件保存到StringBuffer
            buffer.append(line+"\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //防止空指针
            if(isr!=null)
                try {
                    isr.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
        } 
        return buffer.toString();
    }
    //解析源代码  获取相应的数据
    public static List<HashMap<String,String>> getHotelInfo(String url,String encoding){

        //根据网址获取网址源代码
        String html=getHtmlResourceByUrl(url, encoding);
        //解析源代码
        Document document=Jsoup.parse(html);
        //获取hotel_list 盒子里面的容器
        Element element=document.getElementById("hotel_list");
        //拿到每一个酒店
        Elements elements=element.getElementsByClass("searchresult_info");

        List<HashMap<String, String>> maps=new ArrayList<HashMap<String,String>>();


        //拿到每一个酒店的名称,图片 描述 遍历
        for (Element el : elements) {
            HashMap<String, String> map=new HashMap<String, String>();
            //获取酒店的图片
            String imgSrc=el.getElementsByTag("img").attr("src");
            //获取酒店的描述
            String content=el.getElementsByClass("searchresult_htladdress").text();
            //获取酒店的名称
            String title=el.getElementsByTag("img").attr("alt");
            map.put("imgSrc", imgSrc);
            map.put("content", content);
            map.put("title", title);
            maps.add(map);

        }

        return maps;
    }

    public static void main(String[] args) {


        //得到一个list集合
        List<HashMap<String, String>>     ht
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值