Java网络爬虫(数据抓取)
本文最后更新于 328 天前,其中的信息可能已经有所发展或是发生改变。

数据抓取的几种方式

  1. 直接请求数据接口(最方便),可使用 HttpClient、OKHttp、RestTemplate、Hutool(https://hutool.cn/)等客户端发送请求
  2. 等网页渲染出明文内容后,从前端完整页面中解析出需要的内容
  3. 有一些网站可能是动态请求的,他不会一次性加载所有的数据,而是要点击某个按钮、输入某个验证码才会显示出数据。可使用无头浏览器 => 相关技术:selenium、node.js puppeteer

例子(鱼皮-聚合搜索平台项目)

// 1.获取数据
        String json = "category\n" +": \n" +"\"文章\"\n" +"current\n" +": \n" +"1\n" +"pageSize\n" +": \n" +"8\n" +"reviewStatus\n" +": \n" +"1\n" +"sortField\n" +": \n" +"\"createTime\"\n" +"sortOrder\n" +": \n" +"\"descend\"\n" +"tags\n" +": \n" +"[]";
        String url = "https://www.code-nav.cn/learn/passage";
        String result = HttpRequest
                .post(url)
                .body(json)
                .execute()
                .body();
        System.out.println(result);
        // 2.数据转换

jsoup 解析库(https://jsoup.org/):支持发送请求获取到 HTML 文档,然后从中解析出需要的字段

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.Map;

// 爬取的网站地址
String url = "https://cn.bing.com/images/search?q=二次元&form=HDRSC2&first=1";
Document doc = Jsoup.connect(url).get();
Elements select = doc.select(".iuscp.varh");
for (Element element : select) {
    // 去图片地址(murl)
    String m = element.select(".iusc").get(0).attr("m");
    Map<String, Object> map = JSONUtil.toBean(m, Map.class);
    String murl = (String) map.get("murl");
    System.out.println(murl);
    // 取标题
    String title = element.select(".inflnk").get(0).attr("aria-label");
    System.out.println(title);
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇