抓取jsp网页源代码(我的Python技能很烂示例代码(-ib图片))

优采云 发布时间: 2021-12-12 21:31

  抓取jsp网页源代码(我的Python技能很烂示例代码(-ib图片))

  我的任务是为用户制作一个应用程序来搜索他们查询的三张图片。可以用任何语言编写,推荐使用Python。不过我的Python技术很烂,我最熟悉Java,我已经下载了我打算使用的Eclipse SWT包。

  好的,到目前为止你做了什么

  我介绍了他们的示例代码,这使得一个简单的网络浏览器成为可能。我将 Google 图片显示为主页,并计划使用 JavaScript/jQuery 自动填充他们的查询并返回前三张图片。 (我还计划使用 JavaScript/jQuery 以某种方式返回三个图像。)

  根据Eclipse SWT文档evaluate(),execute()用于评估和执行JavaScript: 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 图片: tab = wi & ei = m8g4VLndMaz4igKlvoDADg & ved =0CAMQqi4oAQ。

  文本字段是名为“lst-ib”的输入。该按钮是名为“btnG”的输入。文本字段位于 ID 为“gs_lc0”的 div 内。 (我还在那里看到了多个其他输入元素,它们的大小完全相同)。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线