每個內容豐富的app背後都有一個龐大的數據庫做爲支撐java
那是否是意味着沒有強大團隊的的咱們就與開發git
內容豐富的app無緣了呢github
並非,別忘了咱們還有取之不盡用之不絕的資源寶庫--互聯網數據庫
咱們可使用爬蟲爲咱們的app提供內容支撐app
提到爬蟲,就不得不提專爲java打造的爬蟲利器--jsoup了url
看完jsouputil,包你學會最基本java爬蟲技巧,不會你打我spa
爬蟲步驟:3d
1、構造Javabean指針
能夠說每個recyclerview list 的child 都是一個Javabean類型的數據封裝集code
咱們先創建一個叫作TianWen(天文)的javabean
public TianWen{ //既然是爬HTMl網頁,那麼咱們爬到的數據通常都是String型
private String title;
private String imgUrl;
private String content;
private String link;
//public setter getter方法,必定要是public的
2、分析網頁
以 www.astron.ac.cn/list-2-1.ht… 爲例,光標移動到第一篇文章的標題 「宇宙團狀物質以三分之一光速的速度被吸入黑洞中」 處,
右鍵鼠標,點擊檢查
而後就能夠看到整個document tree 了
這個網頁的結構但是說是很是簡單明瞭,document tree 的結構一目瞭然
咱們要爬的就是全部 li 標籤的標題text,圖片src,內容p和跳轉連接href
3、依據document tree的結構一一爬取咱們想要的文本text,圖片連接src和跳轉連接href(title,img,content,link)
private static String TianZhiWenHead="www.astron.ac.cn/";
public ListgetTianWen(String s){//s爲網頁url
List<TianWen>beanList=new ArrayList<>();
Document doc=Jsoup.parse(s);
Element e=doc.select("ul.newslist_pic").first();
for (Element ee:e.children())
複製代碼
e.children()就是 ul 標籤下全部的 li 標籤,注意用.children的時候,
要注意辨別是否是全部的child都是你想要爬的內容,容易空指針
{
TianWen bean=new TianWen();
bean.setTitle(ee.child(0).attr("title"));//setTitle
bean.setImgUrl(ee.child(0).child(0).attr("src"));//setImgUrl
bean.setContent(ee.child(1).child(1).text());//setContent
final String link=TianZhiWenHead+ee.child(0).attr("href");
bean.setLink(link);//setLink
beanList.add(bean);
}
return beanList;//這個beanList就是recyclerview須要的dataList
}
複製代碼
4、綁定數據和recyclerview
有了dataList,再須要一個適配器adapter,就能夠把dataList和recyclerview綁定到一塊兒
關於recyclerview的baseAdapter,github上有不少,這裏推薦兩個
5、本項目截圖
項目地址歡迎star