网页爬虫抓取百度图片(用Jsoup解析img标签并提取里面的title和data-original属性 )
优采云 发布时间: 2022-02-08 00:14网页爬虫抓取百度图片(用Jsoup解析img标签并提取里面的title和data-original属性
)
大家好,我是小北。
在普通的群聊中,有时会遇到那种欺负人。如果你不同意,你会开始谈论阴阳并发送各种表情符号。但是,你的微信表情总是一点点,不够个性,上网去百度太麻烦了。本文文章根据emoji中的关键词网站下载emoji到本地,让黑帮远离你。
本文使用java的OKHttp框架作为爬虫抓取“post emoji”网站()的表情包,使用Jsoup框架解析抓取到的网页。
马文
OKHttp是一个优秀的网络请求框架,可以请求http、https、get()、post()、put()等请求方法。Jsoup是一个解析网页的框架,可以像JS一样使用。
com.squareup.okhttp3
okhttp
4.9.3
org.jsoup
jsoup
1.14.3
思路分析
打开网站,搜索关键字[Loading Force]的表情包,打开F12控制面板,可以看到每个表情包都收录在div元素中,翻的时候可以读取url地址这一页。可以看到第一页最后一个数字是1,第二页是2,第三页是3。这个很容易做到,只需要改变数字即可。
String url = String.format("https://fabiaoqing.com/search/bqb/keyword/%s/type/bq/page/%d.html", "装逼", 1);
public Request buildRequest(String url) {
Request request = new Request.Builder()
.url(url)
.build();
return request;
}
public Response getResponse( Request request) {
Response response = null;
try {
OkHttpClient client = new OkHttpClient();
response = client.newCall(request).execute();
System.out.println(response.body().string());
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
继续查看网页源码,表情图片隐藏在div层下的img表情中,使用Jsoup解析img标签,提取里面的title和data-original属性,作为文件名和内容图片。
Map map = new HashMap();
Document document = Jsoup.parse(html);
Elements elements = document.getElementsByClass("ui image bqppsearch lazy");
for (Element element : elements) {
Attributes attributes = element.attributes();
String key = attributes.get("title").replaceAll("\\n", "").replaceAll("[/\\\\\\\\:*?|\\\"]", "");
String value = attributes.get("data-original");
map.put(key, value);
}