공부용

html 웹 크롤링 하기 본문

2018-2 IoT 가습기/안드로이드

html 웹 크롤링 하기

고딕짱! 2018. 11. 16. 23:28

jsoup-1.11.3.jar


우선 첨부파일을 받고


1. 사용하는 프로젝트 - app - libs에 .jar파일을 위치시킨다.



2. 좌측상단을 Project로 맞춰놓고 libs->.jar에 우측마우스를 누르면 나오는 Add as library를 누름

 

3.  Layout


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
tools:context=".MainActivity">

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text=""
android:id="@+id/textView"
android:maxLines = "100"
android:scrollbars = "vertical"
android:layout_above="@+id/button" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="데이터 가져오기"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />

</RelativeLayout>
4. Java 소스

package com.example.administrator.bluetooth1;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;


public class webview extends AppCompatActivity {

private String htmlPageUrl = " url "; //파싱할 홈페이지의 URL주소
private TextView textviewHtmlDocument;
private String htmlContentInStringFormat="";

int cnt=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.parsing);


textviewHtmlDocument = (TextView)findViewById(R.id.textView);
textviewHtmlDocument.setMovementMethod(new ScrollingMovementMethod()); //스크롤 가능한 텍스트뷰로 만들기

Button htmlTitleButton = (Button)findViewById(R.id.button);
htmlTitleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println( (cnt+1) +"번째 파싱");
JsoupAsyncTask jsoupAsyncTask = new JsoupAsyncTask();
jsoupAsyncTask.execute();
cnt++;
}
});
}

private class JsoupAsyncTask extends AsyncTask<Void, Void, Void> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
try {

Document doc = Jsoup.connect(htmlPageUrl).get();


//테스트1
Elements titles= doc.select("div.auto");

System.out.println("-------------------------------------------------------------");
for(Element e: titles){
System.out.println("title: " + e.text());
htmlContentInStringFormat += e.text().trim() + "\n";

String humi = e.text();
}
System.out.println("-------------------------------------------------------------");

} catch (IOException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Void result) {
textviewHtmlDocument.setText(htmlContentInStringFormat);
}
}
}








제가 필요한 정보만 긁어오기 위해서는 이 코드가 제일 중요합니다



Elements titles= doc.select("div.auto");


우선 크롤링할 홈페이지에서 ctrl + shift + i 를 누르면 개발자도구창이 뜹니다.



이런식으로 뜨게 되는데 div = class "auto"가 보입니다.

div.auto 하면 그 div에 대한 내용만 긁어오게 됩니다.


div에 대한 설명입니다

https://ofcourse.kr/html-course/div-%ED%83%9C%EA%B7%B8




'2018-2 IoT 가습기 > 안드로이드' 카테고리의 다른 글

안드로이드 웹뷰  (0) 2018.11.16
Comments