一、先在build.gradle中导入这两个框架,一个是jsoup(爬虫),一个是picasso(加载网络图片),一个是列表控件recycleview;导入后ctrl+f9

dependencies {implementation 'org.jsoup:jsoup:1.9.2'implementation 'com.squareup.picasso:picasso:2.5.2'implementation 'com.android.support:recyclerview-v7:28.1.1'

二、查看我们要爬取的页面的效果图,登录http://www.jj20.com/

三、代码展示:

1.布局(activity_demo.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".DemoActivity"><TextViewandroid:layout_marginBottom="10dp"android:gravity="center|left"android:layout_marginTop="10dp"android:textStyle="bold"android:textSize="18sp"android:textColor="#ffffff"android:text="最新壁纸"android:background="#51b6ec"android:layout_width="150dp"android:layout_height="40dp" /><androidx.recyclerview.widget.RecyclerViewandroid:background="#2fb9a6af"android:id="@+id/rv_demo1"android:layout_width="match_parent"android:layout_height="200dp"></androidx.recyclerview.widget.RecyclerView>
<Viewandroid:layout_width="match_parent"android:layout_height="3dp"/><TextViewandroid:layout_marginBottom="10dp"android:gravity="center|left"android:layout_marginTop="10dp"android:textStyle="bold"android:textSize="18sp"android:textColor="#ffffff"android:text="风景壁纸"android:background="#51b6ec"android:layout_width="150dp"android:layout_height="40dp" /><androidx.recyclerview.widget.RecyclerViewandroid:background="#2fb9a6af"android:id="@+id/rv_demo2"android:layout_width="match_parent"android:layout_height="200dp"></androidx.recyclerview.widget.RecyclerView>

2.jsoup工具类(JsoupUtil.java)

public class JsoupUtil {private static JsoupUtil util;public static JsoupUtil getInstance() {if (util == null) {util = new JsoupUtil();}return util;}public void getPhotoLists1(final Handler handler, final String url) {final List<PhotoList> oList=new ArrayList<>();new Thread(){@Overridepublic void run() {super.run();Connection connection=Jsoup.connect(url);connection.timeout(1000);try {Document document=connection.get();Element ul=document.select("ul.picbz").first();Elements lis=ul.getElementsByTag("li");for (Element li:lis) {Element a=li.getElementsByTag("a").first();String title=a.attr("title");String imgUri=a.getElementsByTag("img").attr("src");PhotoList photoList=new PhotoList(imgUri,title);oList.add(photoList);}Message message=handler.obtainMessage();message.what=0x33;message.obj=oList;handler.sendMessage(message);} catch (IOException e) {e.printStackTrace();}}}.start();}public void getPhotoLists2(final Handler handler, final String url) {final List<PhotoList> oList=new ArrayList<>();new Thread(){@Overridepublic void run() {super.run();Connection connection=Jsoup.connect(url);connection.timeout(1000);try {Document document=connection.get();Element ul=document.select("ul.picbz").get(1);Elements lis=ul.getElementsByTag("li");for (Element li:lis) {Element a=li.getElementsByTag("a").first();String title=a.attr("title");String imgUri=a.getElementsByTag("img").attr("src");PhotoList photoList=new PhotoList(imgUri,title);oList.add(photoList);}Message message=handler.obtainMessage();message.what=0x34;message.obj=oList;handler.sendMessage(message);} catch (IOException e) {e.printStackTrace();}}}.start();}
}

3.实体类(PhotoList.java)----存放爬取的网络图片地址,以及网络图片标题

public class PhotoList {private String imgUri;private String title;public PhotoList() {}public PhotoList(String imgUri, String title) {this.imgUri = imgUri;this.title = title;}public String getImgUri() {return imgUri;}public void setImgUri(String imgUri) {this.imgUri = imgUri;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}
}

4.适配器(PhotoListAdapter.java)以及子布局(demo_item)

public class PhotoListAdapter extends RecyclerView.Adapter<PhotoListAdapter.ViewHolder> {private Context context;private List<PhotoList> oList;private LayoutInflater inflater;public PhotoListAdapter(Context context, List<PhotoList> oList) {this.context = context;this.oList = oList;this.inflater = LayoutInflater.from(context);}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = inflater.inflate(R.layout.demo_item, parent, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, final int position) {holder.demo_tv.setText(oList.get(position).getTitle());Picasso.with(context).load(oList.get(position).getImgUri()).placeholder(R.mipmap.ic_launcher).into(holder.demo_iv);}@Overridepublic int getItemCount() {return oList.size();}class ViewHolder extends RecyclerView.ViewHolder {private TextView demo_tv;private ImageView  demo_iv;public ViewHolder(@NonNull View itemView) {super(itemView);demo_tv= itemView.findViewById(R.id.demo_tv);demo_iv = itemView.findViewById(R.id.demo_iv);}}}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_gravity="center"android:layout_width="150dp"android:background="#fcfafa"android:layout_height="100dp">
<ImageViewandroid:layout_marginTop="6dp"android:id="@+id/demo_iv"android:layout_width="match_parent"android:layout_height="60dp" /><TextViewandroid:id="@+id/demo_tv"android:gravity="center"android:textSize="11sp"android:layout_width="match_parent"android:layout_height="30dp" />
</LinearLayout>

5.爬取的网页源代码的主体部分,查看要爬取的网页源代码就能看到(http://www.jj20.com/

<div class="bza2"><script>g("bza2");</script></div><div class="g-gxlist-cms g-box-1200 g-main-bg m-margin15 clearfix">
<div class="g-tit-tp"><i></i><em><h1>最新壁纸</h1></em><span><a target="_blank" href="/bz/"></a></span></div>
</div>
<div class="g-box-1200">
<ul class="picbz">
<li><a target="_blank" href="/bz/hhzw/sgsc/334753.html" title="美味的红树莓图片"><img src="http://img.jj20.com/up/allimg/1114/062R1115H6/21062Q15H6-1-lp.jpg" width="298" height="168" alt="美味的红树莓图片"></a><p><a href="/bz/hhzw/sgsc/334753.html">美味的红树莓图片</a>(8张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/hhzw/yjhx/334752.html" title="郁金香花朵图片大全大图"><img src="http://img.jj20.com/up/allimg/1114/062R1114927/21062Q14927-1-lp.jpg" width="298" height="168" alt="郁金香花朵图片大全大图"></a><p><a href="/bz/hhzw/yjhx/334752.html">郁金香花朵图片大全大图</a>(13张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/smzw/334751.html" title="唯美银杏树图片"><img src="http://img.jj20.com/up/allimg/1114/062R1114F6/21062Q14F6-1-lp.jpg" width="298" height="168" alt="唯美银杏树图片"></a><p><a href="/bz/zrfg/smzw/334751.html">唯美银杏树图片</a>(13张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/mwjy/mbtd/334750.html" title="高清汉堡包图片大全"><img src="http://img.jj20.com/up/allimg/1114/062R1114120/21062Q14120-1-lp.jpg" width="298" height="168" alt="高清汉堡包图片大全"></a><p><a href="/bz/mwjy/mbtd/334750.html">高清汉堡包图片大全</a>(10张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/nxxz/shxz/334749.html" title="懵懂少女写真图片"><img src="http://img.jj20.com/up/allimg/1114/062621114A4/210626114A4-1-lp.jpg" width="298" height="168" alt="懵懂少女写真图片"></a><p><a href="/bz/nxxz/shxz/334749.html">懵懂少女写真图片</a>(9张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334748.html" title="高清唯美彩虹图片"><img src="http://img.jj20.com/up/allimg/1114/062621110J7/210626110J7-1-lp.jpg" width="298" height="168" alt="高清唯美彩虹图片"></a><p><a href="/bz/zrfg/fgqt/334748.html">高清唯美彩虹图片</a>(15张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334747.html" title="最美公路风景图片"><img src="http://img.jj20.com/up/allimg/1114/062621104051/210626104051-1-lp.jpg" width="298" height="168" alt="最美公路风景图片"></a><p><a href="/bz/zrfg/fgqt/334747.html">最美公路风景图片</a>(6张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/xsxj/334746.html" title="壮观的雪山图片"><img src="http://img.jj20.com/up/allimg/1114/062621103415/210626103415-1-lp.jpg" width="298" height="168" alt="壮观的雪山图片"></a><p><a href="/bz/zrfg/xsxj/334746.html">壮观的雪山图片</a>(16张)</p><div class="shadow"></div></li></ul></div><div class="g-gxlist-cms g-box-1200 g-main-bg m-margin15 clearfix">
<div class="g-tit-tp"><i></i><em><h1>风景图片</h1></em><span><a target="_blank" href="/bz/zrfg/"></a></span></div>
</div>
<div class="g-box-1200">
<ul class="picbz">
<li><a target="_blank" href="/bz/zrfg/smzw/334751.html" title="唯美银杏树图片"><img src="http://img.jj20.com/up/allimg/1114/062R1114F6/21062Q14F6-1-lp.jpg" width="298" height="168" alt="唯美银杏树图片"></a><p><a href="/bz/zrfg/smzw/334751.html">唯美银杏树图片</a>(13张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334748.html" title="高清唯美彩虹图片"><img src="http://img.jj20.com/up/allimg/1114/062621110J7/210626110J7-1-lp.jpg" width="298" height="168" alt="高清唯美彩虹图片"></a><p><a href="/bz/zrfg/fgqt/334748.html">高清唯美彩虹图片</a>(15张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334747.html" title="最美公路风景图片"><img src="http://img.jj20.com/up/allimg/1114/062621104051/210626104051-1-lp.jpg" width="298" height="168" alt="最美公路风景图片"></a><p><a href="/bz/zrfg/fgqt/334747.html">最美公路风景图片</a>(6张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/xsxj/334746.html" title="壮观的雪山图片"><img src="http://img.jj20.com/up/allimg/1114/062621103415/210626103415-1-lp.jpg" width="298" height="168" alt="壮观的雪山图片"></a><p><a href="/bz/zrfg/xsxj/334746.html">壮观的雪山图片</a>(16张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/xsxj/334744.html" title="冬天的雪风景图片"><img src="http://img.jj20.com/up/allimg/1114/062421125917/210624125917-1-lp.jpg" width="298" height="168" alt="冬天的雪风景图片"></a><p><a href="/bz/zrfg/xsxj/334744.html">冬天的雪风景图片</a>(14张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/xsxj/334735.html" title="高清冰雪风景图片"><img src="http://img.jj20.com/up/allimg/1114/062021132315/210620132315-1-lp.jpg" width="298" height="168" alt="高清冰雪风景图片"></a><p><a href="/bz/zrfg/xsxj/334735.html">高清冰雪风景图片</a>(8张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334729.html" title="蜿蜒曲折的公路图片"><img src="http://img.jj20.com/up/allimg/1114/061621110643/210616110643-1-lp.jpg" width="298" height="168" alt="蜿蜒曲折的公路图片"></a><p><a href="/bz/zrfg/fgqt/334729.html">蜿蜒曲折的公路图片</a>(12张)</p><div class="shadow"></div></li>
<li><a target="_blank" href="/bz/zrfg/fgqt/334727.html" title="公园里的长椅图片"><img src="http://img.jj20.com/up/allimg/1114/061621110048/210616110048-1-lp.jpg" width="298" height="168" alt="公园里的长椅图片"></a><p><a href="/bz/zrfg/fgqt/334727.html">公园里的长椅图片</a>(11张)</p><div class="shadow"></div></li></ul></div>

6.Activity主代码(DemoActivity.java)

public class DemoActivity extends AppCompatActivity {private RecyclerView rv_demo1,rv_demo2;private PhotoListAdapter photoListAdapter;private List<PhotoList> oList1 = new ArrayList<>();private List<PhotoList> oList2 = new ArrayList<>();private String weburl="http://www.jj20.com/";private LinearLayoutManager manager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_demo);rv_demo1=findViewById(R.id.rv_demo1);rv_demo2=findViewById(R.id.rv_demo2);JsoupUtil.getInstance().getPhotoLists1(handler,weburl);JsoupUtil.getInstance().getPhotoLists2(handler,weburl);}private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);manager = new LinearLayoutManager(DemoActivity.this);switch (msg.what) {case 0x33:oList1 = (List<PhotoList>) msg.obj;photoListAdapter=new PhotoListAdapter(DemoActivity.this,oList1);rv_demo1.setLayoutManager(manager);rv_demo1.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));rv_demo1.setAdapter(photoListAdapter);break;case 0x34:oList2 = (List<PhotoList>) msg.obj;photoListAdapter=new PhotoListAdapter(DemoActivity.this,oList2);manager = new LinearLayoutManager(DemoActivity.this);rv_demo2.setLayoutManager(manager);rv_demo2.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));rv_demo2.setAdapter(photoListAdapter);break;}}};}

四、效果图:

Jsoup框架爬取网络图片相关推荐

  1. java 使用webmagic 爬虫框架爬取博客园数据

    java 使用webmagic 爬虫框架爬取博客园数据存入数据库 学习记录   webmagic简介: WebMagic是一个简单灵活的Java爬虫框架.你可以快速开发出一个高效.易维护的爬虫. ht ...

  2. scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...

  3. 利用python的scrapy框架爬取google搜索结果页面内容

    scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...

  4. 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云

    基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...

  5. 03_使用scrapy框架爬取豆瓣电影TOP250

    前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关 ...

  6. scrapy框架爬取网站图片

    使用scrapy 框架爬取彼岸图库 前言: 这两天在网上学习了一下scrapy框架,发现及其好用,把爬虫步骤分的细细的.所以写了一个简单项目回顾一下并分享给大家^ . ^ 源码我已经放到Github了 ...

  7. selenium框架爬取p2p问题平台信息,需加载点击页面的。

    @TOC selenium框架爬取p2p问题平台信息 # -*- coding: utf-8 -*- """ Created on Tue Dec 10 07:03:57 ...

  8. 【Python爬虫系列教程 28-100】小姐姐带你入门爬虫框架Scrapy、 使用Scrapy框架爬取糗事百科段子

    文章目录 Scrapy快速入门 安装和文档: 快速入门: 创建项目: 目录结构介绍: Scrapy框架架构 Scrapy框架介绍: Scrapy框架模块功能: Scrapy Shell 打开Scrap ...

  9. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

最新文章

  1. python菜鸟工具-终于清楚python菜鸟入门教程
  2. java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法
  3. LeetCode每日一题 416. 分割等和子集
  4. html5按钮样式具有子项目,如何使用HTML5+css3制作出12种常用的按钮开关样式(附完整代码)...
  5. 一文带你掌握OBS的两种常见的鉴权方式
  6. 怎么把c语言变成汇编语言,如何把汇编语言转换成C语言
  7. 视音频格式基础知识视频压缩
  8. 为什么华为5G手机要设置一个5G开关?
  9. c语言课程建设与改革,C语言程序设计课程教学改革的研究与实践
  10. 俄罗斯方块(C语言源代码)
  11. linux使用grep查找文件内容,linux如何使用grep命令查找文件内容
  12. 网络入门-IP地址规划
  13. Android录制声音文件(音频),并播放
  14. 小技巧|CSS如何实现文字两端对齐
  15. 两位“世界杰出女科学家成就奖” 获奖女科学家荣获诺贝尔化学奖
  16. OBU ETC的汽车电子抛负载解决方案
  17. 厂商SSD对数据库性能影响 测试报告
  18. GD32E230开发环境搭建 keil无法识别芯片 jlink无法烧录
  19. PaaS开发平台当道,SaaS软件系统将何去何从
  20. Linux的校园任我行与微软的校园先锋计划

热门文章

  1. 2021年技术体系架构
  2. 互联网电视无处不在的广告惹人烦,消费者转投传统电视怀抱
  3. android仿小米指南针
  4. 【数据库MySQL】2021最新官网下载及查看MySQL版本步骤教程
  5. Django项目后端实现注册功能---短信验证码(容联云)。
  6. Python:利用Pillow库创建字符画
  7. 887-三维形体投影面积
  8. 朴素贝叶斯分类(Python)
  9. 移动应用测试场景的五个重点
  10. 用YOLO3进行人民币编码的定位与切割