0

ユーザーの要件 (入力として取得) に基づいてユーザーに Web ページを表示し、Firefox で開くスクリプトを作成しています。たとえば、これの大まかなバージョンは次のとおりです。

#!/bin/bash
read -p "What do you want to search" search_term
link=$(echo "http://www.mywebsite_whatever.com/search?q="$search_term)
firefox $link

主な問題は、許可がないため、この Web サイトを wget/urllib できないことです。

今私がやりたいことは次のとおりです。

ユーザーにウェブページの特定のキーワードだけを見てもらいます。そのために、次のいずれかを行います。

  1. findキーワードを入れたボックス (Ctrl + F) をオンにして、Firefox を開きます (Firefox のソース コードは変更しません)。

  2. どういうわけか、Firefox で Web サイトを開き、html として保存して終了します。(wget はできません) その後grep、必要に応じてキーワードを出力できます。[これがどのように非倫理的であるかということから始めないでください。私はこれを単なる演習として行っています]

私はLinuxに取り組んでいます。

4

2 に答える 2

3

プログラムでブラウザを制御するには、Seleniumを試してください。JavaPythonなどをサポートします。

http://seleniumhq.org/docs/03_webdriver.htmlのソースコードの例を参照してください。

package org.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Selenium2Example  {
    public static void main(String[] args) {
    // Create a new instance of the Firefox driver
    // Notice that the remainder of the code relies on the interface, 
    // not the implementation.
    WebDriver driver = new FirefoxDriver();

    // And now use this to visit Google
    driver.get("http://www.google.com");
    // Alternatively the same thing can be done like this
    // driver.navigate().to("http://www.google.com");

    // Find the text input element by its name
    WebElement element = driver.findElement(By.name("q"));

    // Enter something to search for
    element.sendKeys("Cheese!");

    // Now submit the form. WebDriver will find the form for us from the element
    element.submit();

    // Check the title of the page
    System.out.println("Page title is: " + driver.getTitle());

    // Google's search is rendered dynamically with JavaScript.
    // Wait for the page to load, timeout after 10 seconds
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
           public Boolean apply(WebDriver d) {
               return d.getTitle().toLowerCase().startsWith("cheese!");
           }
        });

        // Should see: "cheese! - Google Search"
        System.out.println("Page title is: " + driver.getTitle());

        //Close the browser
        driver.quit();
    }
}
于 2012-06-05T07:02:56.600 に答える
1

スイッチで Wget を使用し--user-agentて、Web サイトが Firefox を使用していると認識するようにします。たとえば、

wget --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0"

もちろん、永続的なスクリプトの場合は、代わりに--user-agent="MyScript/1.0 (http://mywebsite/)"または類似のものを使用して、問題が発生した場合に連絡先を知る必要があります。

于 2012-06-05T08:43:04.177 に答える