자바로 Google 이미지를 스크랩하는 웹

마이크 워렌

사용자가 theirQuery의 세 사진을 검색하는 데 사용하는 응용 프로그램을 만드는 작업을 맡았습니다. 모든 언어로 작성할 수 있으며 Python이 제안되었습니다. 그러나 Python에 대한 내 GUI 기술은 짜증나고 Java에 가장 익숙하며 사용하려는 Eclipse SWT 패키지를 다운로드했습니다.

좋아, 지금까지 무엇을했는지

나는 간단한 웹 브라우저를 만드는 그들의 예제 코드를 포주했다. Google 이미지를 홈페이지로 표시하고 JavaScript / jQuery를 사용하여 쿼리 작성을 자동화하고 처음 세 개의 사진을 반환 할 계획입니다. (저는 또한 JavaScript / jQuery를 사용하여 세 개의 그림을 반환 할 계획입니다.)

이클립스 SWT에 대한 설명서에 따르면 evaluate(), execute()평가하는 데 사용됩니다, 실행 자바 스크립트 : http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/ org / eclipse / swt / browser / Browser.html

내가 사용한 코드는 다음과 같습니다.

import org.eclipse.swt.*;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class BrowserCodeDemo {

    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell(display);
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 3;
        shell.setLayout(gridLayout);
        ToolBar toolbar = new ToolBar(shell, SWT.NONE);
        ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH);
        itemBack.setText("Back");
        ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH);
        itemForward.setText("Forward");
        ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH);
        itemStop.setText("Stop");
        ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH);
        itemRefresh.setText("Refresh");
        ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH);
        itemGo.setText("Go");

        GridData data = new GridData();
        data.horizontalSpan = 3;
        toolbar.setLayoutData(data);

        Label labelAddress = new Label(shell, SWT.NONE);
        labelAddress.setText("Address");

        final Text location = new Text(shell, SWT.BORDER);
        data = new GridData();
        data.horizontalAlignment = GridData.FILL;
        data.horizontalSpan = 2;
        data.grabExcessHorizontalSpace = true;
        location.setLayoutData(data);

        final Browser browser;
        try {
            browser = new Browser(shell, SWT.NONE);
        } catch (SWTError e) {
            System.out.println("Could not instantiate Browser: " + e.getMessage());
            display.dispose();
            return;
        }
        data = new GridData();
        data.horizontalAlignment = GridData.FILL;
        data.verticalAlignment = GridData.FILL;
        data.horizontalSpan = 3;
        data.grabExcessHorizontalSpace = true;
        data.grabExcessVerticalSpace = true;
        browser.setLayoutData(data);

        final Label status = new Label(shell, SWT.NONE);
        data = new GridData(GridData.FILL_HORIZONTAL);
        data.horizontalSpan = 2;
        status.setLayoutData(data);

        final ProgressBar progressBar = new ProgressBar(shell, SWT.NONE);
        data = new GridData();
        data.horizontalAlignment = GridData.END;
        progressBar.setLayoutData(data);

        /* event handling */
        Listener listener = new Listener() {
            @Override
            public void handleEvent(Event event) {
                ToolItem item = (ToolItem)event.widget;
                String string = item.getText();
                if (string.equals("Back")) browser.back(); 
                else if (string.equals("Forward")) browser.forward();
                else if (string.equals("Stop")) browser.stop();
                else if (string.equals("Refresh")) browser.refresh();
                else if (string.equals("Go")) browser.setUrl(location.getText());
           }
        };
        browser.addProgressListener(new ProgressListener() {
            @Override
            public void changed(ProgressEvent event) {
                    if (event.total == 0) return;                            
                    int ratio = event.current * 100 / event.total;
                    progressBar.setSelection(ratio);
            }
            @Override
            public void completed(ProgressEvent event) {
                progressBar.setSelection(0);
            }
        });

        browser.addLocationListener(new LocationListener() {
            @Override
            public void changed(LocationEvent event) {
                if (event.top) location.setText(event.location);
            }
            @Override
            public void changing(LocationEvent event) 
            {
                //System.out.println("Something is happening.");
            }

        });
        itemBack.addListener(SWT.Selection, listener);
        itemForward.addListener(SWT.Selection, listener);
        itemStop.addListener(SWT.Selection, listener);
        itemRefresh.addListener(SWT.Selection, listener);
        itemGo.addListener(SWT.Selection, listener);
        location.addListener(SWT.DefaultSelection, new Listener() {
            @Override
            public void handleEvent(Event e) 
            {
                browser.setUrl(location.getText());
                System.out.println("New URL loaded");
            }
        });

        shell.open();
        browser.setUrl(
            "https://www.google.com/imghp?hl=en&tab=wi&ei=m8g4VLndMaz4igKlvoDADg&ved=0CAMQqi4oAQ");
        //browser.setVisible(false);
        boolean jQueryExecuted = browser.execute("$(\'#lst-ib\').val(\'snopes\')");
        if (!jQueryExecuted)
        {
            System.out.println("Your jQuery didn't execute.");
        }
        jQueryExecuted = browser.execute("$(\'[name=btnG]\').click()");
        if (!jQueryExecuted)
        {
            System.out.println("Your jQuery didn't execute.");
        }
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }

        display.dispose();

    }

}

텍스트 필드를 자동으로 설정하려고했지만 Java와 브라우저 모두에서 실패했기 때문에 문제가 코드 자체라고 생각하지 않습니다. / * 텍스트 필드의 이름은 "lst-ib"입니다. * /

무엇을 웹 스크랩하려고합니까?

Google 이미지를 웹 스크랩하려고합니다 : https://www.google.com/imghp?hl=ko&tab=wi&ei=m8g4VLndMaz4igKlvoDADg&ved=0CAMQqi4oAQ .

텍스트 필드는 이름이 "lst-ib"인 입력입니다. 버튼은 이름이 "btnG"인 입력입니다. 텍스트 필드는 ID가 "gs_lc0"인 div 내에 있습니다. (동일한 크기의 다른 입력 요소도 여러 개 있습니다.)

마이크 워렌

오 와우. 10 시간이 지났고 나 외에는 아무도 댓글을 달지 않았습니다. 문제는 내가 생각했던 것보다 훨씬 더 크다는 것이 밝혀졌습니다. Eclipse SWT의 브라우저는 jQuery를 실행할 수 없습니다.

다행히도 JavaScript로 작성되었으며 더 이상 사용되지 않지만 여전히 작동하는 Google Image API를 찾았습니다. 또한 페이지에서 몇 가지 간단한 소스 코드를 찾았습니다. https://developers.google.com/image-search/v1/devguide#hiworld

나는 변경 newImg.src = "/image-search/v1/result.tbUrl;"newImg.src = result.tbUrl;이미지를로드 할 수 있도록. 이것은 모든 것을 바꿉니다.


새로운 계획은 무엇입니까?

이제 Java에서이 코드를 사용할 계획입니다. src를 JavaScript 코드가 사용하는 Google Image API 인 src로 변경 한 다음 코드를 호출하여 처음 세 개의 이미지를 가져올 계획입니다. 이것이 자바에서 자바 스크립트 를 실행하는 방법 입니다. 자바 프로그래밍에서 자바 스크립트를 실행하는 방법 입니다. Java가 사용하는 JavaScript 엔진의 src를 https://www.google.com/jsapi 로 변경하는 방법을 알아낼 수만 있다면

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

라이브 데이터를 Google 시트로 웹 스크랩하는 방법

분류에서Dev

BeautifulSoup으로 여러 페이지를 스크랩하는 웹

분류에서Dev

nodejs로 웹 페이지를 스크랩하는 URL 반환

분류에서Dev

자바 스크립트 동적 웹 사이트를 스크랩하는 방법

분류에서Dev

Google Colab에서 동적 자바 스크립트 웹 사이트 스크랩

분류에서Dev

''(으)로 반환되는 웹 스크랩 이미지 URL

분류에서Dev

Google 스프레드 시트에서 ImportXML을 사용하여 웹 페이지에서 바이 라인 스크랩

분류에서Dev

자바 스크립트를 사용하여 HTML을 삽입하는 웹 사이트 스크랩

분류에서Dev

NHTSA 웹 사이트에서 이미지를 다운로드하기위한 웹 스크랩 (CIREN 충돌 사례)

분류에서Dev

페이지를 새로 고침하는 방법, Google 앱 스크립트 웹

분류에서Dev

GreaseMonkey 용 자바 스크립트를 사용하여 웹 사이트의 이미지 위로 버튼 이동

분류에서Dev

파이썬을 사용하여 웹 사이트 소스 코드에있는 doc.google.com/spreadsheet 링크를 추출 / 다운로드하고 웹 스크랩하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트로 크롬 콘솔에서 웹 사이트 스크랩

분류에서Dev

특정 단어로 시작하는 웹 페이지 문장 스크랩

분류에서Dev

자바 스크립트를 사용하여 내 웹 서버에 이미지 다운로드

분류에서Dev

웹 페이지가 변경되지 않아도 다른 텍스트를 스크랩하는 Python 프로그램

분류에서Dev

내 웹 사이트 용 이미지로 Google지도를 맞춤 설정하는 방법

분류에서Dev

내 웹 페이지에 Google VR 이미지를 배경으로 포함하는 방법

분류에서Dev

내 웹 페이지에 Google VR 이미지를 배경으로 포함하는 방법

분류에서Dev

웹 페이지를 스크랩하고 특정 기호로 시작하는 단어 추출

분류에서Dev

어떻게 자바 / 자바 스크립트를 사용하여 웹 소켓 서버에서 클라이언트로 이미지를 보내려면?

분류에서Dev

BeautifulSoup으로 로그인해야하는 스크랩 웹 사이트

분류에서Dev

테이블을 데이터 프레임으로 웹 스크랩하는 Python

분류에서Dev

스크롤 할 때 자바 스크립트를 사용하여 요소를로드하는 웹 페이지에서 스크랩하려면 어떻게해야합니까?

분류에서Dev

웹 페이지에서 이미지를 스크랩하고 숫자로 변환하여 파일에 저장할 수 있습니까?

분류에서Dev

웹 스크랩 데이터에서 특정 열만 플로팅하는 Bokeh

분류에서Dev

웹 페이지에서 데이터 스크랩. 자바, HTMLUnit

분류에서Dev

Google 스프레드 시트 IMPORTXML 기능으로 웹 사이트 스크랩

분류에서Dev

파이썬에서 xml 페이지를 스크랩하는 웹?

Related 관련 기사

  1. 1

    라이브 데이터를 Google 시트로 웹 스크랩하는 방법

  2. 2

    BeautifulSoup으로 여러 페이지를 스크랩하는 웹

  3. 3

    nodejs로 웹 페이지를 스크랩하는 URL 반환

  4. 4

    자바 스크립트 동적 웹 사이트를 스크랩하는 방법

  5. 5

    Google Colab에서 동적 자바 스크립트 웹 사이트 스크랩

  6. 6

    ''(으)로 반환되는 웹 스크랩 이미지 URL

  7. 7

    Google 스프레드 시트에서 ImportXML을 사용하여 웹 페이지에서 바이 라인 스크랩

  8. 8

    자바 스크립트를 사용하여 HTML을 삽입하는 웹 사이트 스크랩

  9. 9

    NHTSA 웹 사이트에서 이미지를 다운로드하기위한 웹 스크랩 (CIREN 충돌 사례)

  10. 10

    페이지를 새로 고침하는 방법, Google 앱 스크립트 웹

  11. 11

    GreaseMonkey 용 자바 스크립트를 사용하여 웹 사이트의 이미지 위로 버튼 이동

  12. 12

    파이썬을 사용하여 웹 사이트 소스 코드에있는 doc.google.com/spreadsheet 링크를 추출 / 다운로드하고 웹 스크랩하는 방법은 무엇입니까?

  13. 13

    자바 스크립트로 크롬 콘솔에서 웹 사이트 스크랩

  14. 14

    특정 단어로 시작하는 웹 페이지 문장 스크랩

  15. 15

    자바 스크립트를 사용하여 내 웹 서버에 이미지 다운로드

  16. 16

    웹 페이지가 변경되지 않아도 다른 텍스트를 스크랩하는 Python 프로그램

  17. 17

    내 웹 사이트 용 이미지로 Google지도를 맞춤 설정하는 방법

  18. 18

    내 웹 페이지에 Google VR 이미지를 배경으로 포함하는 방법

  19. 19

    내 웹 페이지에 Google VR 이미지를 배경으로 포함하는 방법

  20. 20

    웹 페이지를 스크랩하고 특정 기호로 시작하는 단어 추출

  21. 21

    어떻게 자바 / 자바 스크립트를 사용하여 웹 소켓 서버에서 클라이언트로 이미지를 보내려면?

  22. 22

    BeautifulSoup으로 로그인해야하는 스크랩 웹 사이트

  23. 23

    테이블을 데이터 프레임으로 웹 스크랩하는 Python

  24. 24

    스크롤 할 때 자바 스크립트를 사용하여 요소를로드하는 웹 페이지에서 스크랩하려면 어떻게해야합니까?

  25. 25

    웹 페이지에서 이미지를 스크랩하고 숫자로 변환하여 파일에 저장할 수 있습니까?

  26. 26

    웹 스크랩 데이터에서 특정 열만 플로팅하는 Bokeh

  27. 27

    웹 페이지에서 데이터 스크랩. 자바, HTMLUnit

  28. 28

    Google 스프레드 시트 IMPORTXML 기능으로 웹 사이트 스크랩

  29. 29

    파이썬에서 xml 페이지를 스크랩하는 웹?

뜨겁다태그

보관