일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Reduce
- javascipt
- state
- node.js
- Vue.js
- v-for
- JavaScript
- javscript
- mutations
- kibana
- 콘솔한글깨짐
- 연동
- react
- includes
- Login
- 음양더하기
- getters
- Emit
- sns로그인
- KAKAO
- azure
- mixins
- 템플릿문법
- vuex
- IntelliJ
- axios
- Express.js
- programmers
- v-on
- v-if
- Today
- Total
공부용
html 웹 크롤링 하기 본문
우선 첨부파일을 받고
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 |
---|