Android studio爬取网页
16lz
2021-01-23
准备阶段
我们准备在Android studio 中使用Jsoup爬取某个网页,并将其标题显示在app中。
引入Jsoup
在 build.gradle(Mouble:app)中写入
implementation 'org.jsoup:jsoup:1.9.2'
设置app允许网络访问
在mainifest文件中
//在上一行 <uses-permission android:name="android.permission.INTERNET"/>//在application中android:usesCleartextTraffic="true"
handler和多线程的学习
网络连接可能很耗时,因此需要把网络连接放到子线程中进行
对app各个控件的更改必须放在UI线程中,不能在子线程中直接更改,所以要使用Handler来进行信息的传递,保证线程安全。
经典方法thread加handler message
定义子线程并在子线程中提交信息
Thread thread= new Thread(new Runnable() { @Override public void run() { //耗时操作 Message msg=handler.obtainMessage(); try { Document doc=Jsoup.connect("https://www.52bqg.com/").get(); title =doc.title(); msg.obj=title; }catch (IOException e){ ex=e.toString(); msg.obj=ex; } handler.sendMessage(msg); } });
在handler方法中获得信息并更新控件
private Handler handler=new Handler(){ @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); if (msg.obj!=null) textView.setText(msg.obj.toString()); } };
jsoup的学习和使用
jsoup学习文档
更多相关文章
- android播放网络音频
- Android常用控件之悬浮窗(Service实现)
- Android 时间显示控件 TextClock
- 【Android 界面效果6】Android 控件之ImageSwitcher图片切换器
- 【摘录】Android的线程使用来更新UI----Thread、Handler、Looper
- Android仿人人客户端(v5.7.1)——网络模块时序图
- Android报表控件achartengine介绍(二)