一、设计思路
首先,获取页面的总数,for循环从1到页码最大值,每次爬取一页,将需要的信息从页面中提取出来,最后将爬到的信息存入数据库
1、根据关键字查询

通过参数传入关键字,然后再进行URL拼接即可
public static void main(String[] args) {
if (args.length < 1) {
System.out.println("缺少参数!");
System.exit(0);
}
for (String keyWord : args) {
new DangDangSpider(keyWord).run();
}
}
public DangDangSpider(String keyWord) {
this.url = Data.baseURL + keyWord;
}
2、获取总页数

private int getTotalPageNumber() {
int n = 1;
try {
Document document = Jsoup.parse(new URL(this.url), 3000);
Element ul = document.getElementsByAttributeValue("name", "Fy").get(0);
Elements li_list = ul.getElementsByTag("li");
String totalPageNumber = li_list.get(li_list.size() - 3).getElementsByTag("a").eq(0).text();
n = Integer.parseInt(totalPageNumber);
} catch (IOException e) {
e.printStackTrace();
}
return n;
}
3、解析页面中的数据

private void parseData(String finalURL) throws IOException {
Document document = Jsoup.parse(new URL(finalURL), 3000);
Element element = document.getElementById("component_59");
Elements elements = element.getElementsByTag("li");
List<Book> books = new ArrayList<>();
for (Element e : elements) {
String bookName = e.getElementsByTag("a").eq(0).attr("title").trim();
Double price = Data.string2Double(e.getElementsByAttributeValue("class", "search_now_price").eq(0).text());
String bookAuthor = Data.array2String(e.getElementsByAttributeValue("name", "itemlist-author").eachText());
Book book = new Book();
book.setName(bookName);
book.setPrice(price);
book.setAuthor(bookAuthor);
System.out.println(book);
books.add(book);
}
saveData(books);
}
4、数据存储
数据库选用的是MySQL,常规的JDBC操作即可

二、运行结果

本文介绍了如何利用关键字搜索,通过Jsoup解析网页,抓取DangDang平台的商品信息,并将数据存储到MySQL数据库的过程。设计思路包括URL拼接、获取总页数、数据解析和存储等关键步骤。
3955

被折叠的 条评论
为什么被折叠?



