2015-11-27 2 views
1

нужна ваша помощь в создании приложения в java/J2EE, которое может работать как скребок для веб-сайтов.Как получить контент с помощью веб-скребка в java

Вот моя мысль о проекте

В моей домашней странице приложения появится текстовое поле, в котором пользователь может ввести любой URL, который они хотят получить доступ. После нажатия кнопки «go» веб-страница будет отображаться под моим приложением, то есть URL-адрес останется таким же, как и в моем приложении. Пользователь может вводить все в текстовые поля на веб-странице и нажимать на соответствующее действие (поиск/отправка). В форме submit на этой странице я могу записать текст, который пользователь разместил в текстовом поле, и сохранить его в моей базе данных. Вот и все.

Теперь проблема в том, что если я ищу некоторые уже доступные Java-скребки, такие как WebHarvest, они просто захватывают предопределенные строки по URL-адресу.

Пожалуйста, помогите мне найти какой-то учебник или любое открытое приложение источника, который может работать для меня после некоторых модификаций

Любая помощь будет оценена.

спасибо.

ответ

0

Я предоставлю вам простой Selenium WebDriver в Java. Но все подробности вы найдете here.

import java.io.*; 

import org.apache.commons.io.FileUtils; 
import org.openqa.selenium.By; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.TakesScreenshot; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class WebScrapper { 

    public WebDriver driver = new FirefoxDriver(); 

    /** 
    * Open the test website. 
    */ 
    public void openTestSite() { 
     driver.navigate().to("http://testing-ground.scraping.pro/login"); 
    } 

    /** 
    * 
    * @param username 
    * @param Password 
    * 
    *   Logins into the website, by entering provided username and 
    *   password 
    */ 
    public void login(String username, String Password) { 

     WebElement userName_editbox = driver.findElement(By.id("usr")); 
     WebElement password_editbox = driver.findElement(By.id("pwd")); 
     WebElement submit_button = driver.findElement(By.xpath("//input[@value='Login']")); 

     userName_editbox.sendKeys(username); 
     password_editbox.sendKeys(Password); 
     submit_button.click(); 

    } 

    /** 
    * grabs the status text and saves that into status.txt file 
    * 
    * @throws IOException 
    */ 
    public void getText() throws IOException { 
     String text = driver.findElement(By.xpath("//div[@id='case_login']/h3")).getText(); 
     Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("status.txt"), "utf-8")); 
     writer.write(text); 
     writer.close(); 

    } 

    /** 
    * Saves the screenshot 
    * 
    * @throws IOException 
    */ 
    public void saveScreenshot() throws IOException { 
     File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); 
     FileUtils.copyFile(scrFile, new File("screenshot.png")); 
    } 

    public void closeBrowser() { 
     driver.close(); 
    } 

    public static void main(String[] args) throws IOException { 
     WebScrapper webSrcapper = new WebScrapper(); 
     webSrcapper.openTestSite(); 
     webSrcapper.login("admin", "12345"); 
     webSrcapper.getText(); 
     webSrcapper.saveScreenshot(); 
     webSrcapper.closeBrowser(); 
    } 
} 

Некоторые другие scrape related tools на Java.

Смежные вопросы