연구실에서 사용하는 크롤링 코드와
https://gist.github.com/i88ca/2ebd274587b84f996726 의 트위터 로그인 방법을 참고 했습니다.
자바 1.8, HtmlUnit 2.1을 썼습니다(이전에 HtmlUnit 2.7 버전이라고 잘못썼음).
블로그에 소스코드 문법강조 기능을 넣으니 화면에 짤려보이는 소스코드가 있네요.
전문은 깃허브의 소스를 참고 바랍니다.
소스 링크:
https://github.com/WoongheeLee/HtmlUnitCrawler/blob/master/huCrawler.java
package crawler; import java.io.IOException; public class huCrawler { // ACCOUNT INFORMATION private static String account_email = "EMAIL"; private static String account_password = "PASSWORD"; private WebClient webClient = null; private void init() { webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.getCookieManager().setCookiesEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.waitForBackgroundJavaScript(1000); } private void loginTwitter() throws FailingHttpStatusCodeException, MalformedURLException, IOException { final HtmlPage page = webClient.getPage("https://mobile.twitter.com/session/new"); final HtmlForm form = page.getForms().get(0); form.reset(); HtmlTextInput username = (HtmlTextInput) form.getInputByName("session[username_or_email]"); username.setValueAttribute(account_email); HtmlPasswordInput password = (HtmlPasswordInput) form.getInputByName("session[password]"); password.setValueAttribute(account_password); HtmlInput button = form.getInputByName("commit"); webClient.getOptions().setThrowExceptionOnScriptError(false); HtmlPage p = button.click(); } private void getFollowing() throws FailingHttpStatusCodeException, MalformedURLException, IOException { final HtmlPage page = webClient.getPage("https://mobile.twitter.com/WoongheeLee2/following"); List<?> following = page.getByXPath("//div[@class='user-list']//table[@class='user-item']//td[@class='info']//a"); for (int i = 0; i < following.size(); i++) { String str = following.get(i).toString().substring(21, following.get(i).toString().length()-7); System.out.println(str); } } private void closePage() { webClient.close(); } public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException { huCrawler crawler = new huCrawler(); crawler.init(); crawler.loginTwitter(); crawler.getFollowing(); crawler.closePage(); } }
'노트정리 > 자바 JAVA' 카테고리의 다른 글
나이브 베이지안 자바 구현 + 자바 오브젝트 파일로 쓰고 읽기 (2) | 2017.10.15 |
---|---|
자바 함수에서 다른 종류의 오브젝트 반환하는 방법 (0) | 2017.10.05 |
트위터 메시지를 태그 클라우드(tag cloud, word cloud) 만들기 예제 (0) | 2017.09.26 |
자바에서 json 튜토리얼 (1) | 2017.04.05 |
자바에서 파일 입출력하는 튜토리얼 (0) | 2017.03.30 |
JDBC 튜토리얼 사이트 소개와 예제 (0) | 2016.10.25 |
이클립스에서 the selection cannot be launched 에러 해결법. (0) | 2015.09.30 |
자바의 배열에서 C, C++과 가장 다른 점 (0) | 2014.02.13 |