URL解决中文编码的问题
//爬取一个京东的书籍商品页面,将商品的图片,标题以及价格封装后返回,目前只支持商品的名字是英文的
public List<Book> parseJD(String goodsname) throws Exception {
//先获取对应的url的地址,若是传进来中文后,先解析,再拼接
String message = java.net.URLEncoder.encode(goodsname,"utf-8"); //这一步解决中文编码的问题
String url = "https://search.jd.com/Search?keyword="+message;
//String url = "https://www.baidu.com";
//获取地址后就进行解析,返回的document就是js的页面
Document document = Jsoup.parse(new URL(url),30000);
Element element = document.getElementById("J_goodsList");
//每一本书都保存在一个li标签中
Elements elements = element.getElementsByTag("li");
ArrayList<Book> bookList = new ArrayList<>();
for (Element el:elements){
String img = el.getElementsByTag("img").eq(0).attr("src");
String price = el.getElementsByClass("p-price").eq(0).text();
String title = el.getElementsByClass("p-name").eq(0).text();
Book book = new Book();
book.setImg(img);
String[] split = price.split(" ");
book.setPrice(Float.valueOf(split[0].substring(1)));
book.setTitle(title);
bookList.add(book);
}
return bookList;
}