2011-07-13 17 views
0

私は少しプロジェクトに取り組んでいますが、私はこの時点で固執しているようです。うまくいけば、あなたの偉大な人々のうちの何人かが私にこれを助けることができるでしょう。Greasemonkey-検索エンジンの検索結果ページからランダムな単語を選んでください

私は、検索エンジンの検索結果ページから無作為な単語を選ぶ簡単で効率的な方法を見つけようとしています。これは私が立ち往生している部分です。

それを選んだ後、変数に単語を格納します。事前にhttp://i54.tinypic.com/34fllw1.png

ありがとう:

検索結果は次のようになります。すべてのヒント/助けをいただければ幸いです!

EDIT:ランダムな長さの連続する文字列を選択する方法はありますか?ここ

+0

そして、あなたは言葉だけがしたいです表示されたページから来て、HTMLコードから何も来ませんか? – Jonathon

+1

はい、好ましくは結果の説明からのみです。助けてくれてありがとう! – loopx

答えて

1

はgoogle.com

//get the text 
var text=document.getElementById('rso').textContent; 
    //find the words 
var words=text.match(/\b([a-z]{3,})\b/gi); 
    //pick a word 
alert(words[Math.floor(words.length*Math.random())]); 

で動作する例であるにsearchResultsは "RSO" IDを持つ要素に記載されています。

1

AZ少なくとも3つの文字からなる
正規表現の一致文字列Googleは説明のために使用するクラスがstあるので、ここDr.Molleのsolutiomの改善です:

//get the text 
var text=document.querySelector(".st"),output=[]; 
//loop through the descriptions 
for(var i=0;i<text.length;i++){ 
    //find the words 
    var words=text[i].innerText.match(/\b([a-z]{3,})\b/gi); 
    //push the array to the output variable 
    output.push.apply(output,words); 
} 
//pick a word 
var theWord=output[Math.floor(Math.random()*output.length)]; 
//now theWord has a randomly chosen word 
alert(theWord); 

アウトいくつかの単語を選択します:

//change the 10 to the max number of words 
var amount=Math.floor(Math.random()*10),theWords=""; 
    //get the text 
var text=document.querySelector(".st"),output=[]; 
//loop through the descriptions 
for(var i=0;i<text.length;i++){ 
    //find the words 
    var words=text[i].innerText.match(/\b([a-z]{3,})\b/gi); 
    //push the array to the output variable 
    output.push.apply(output,words); 
} 
//pick a word 
var theNumber=Math.floor(Math.random()*output.length); 
//loops the code the number of times randomly chosen 
for(var i=0;i<amount;i++){ 
    //add on to the string 
    theWords+=(i==0?"":" ")+output[theNumber+i]; 
} 
//now theWords has a random number of consecutive words 
alert(theWords); 

広告@ mの

+0

私が見ているのは、これは私が望むものに選択肢をうまく絞り込んでいます。提案していただきありがとうございます!私はまた、質問したかった、私はランダムな長さの連続した単語の文字列を選ぶことができる方法はありますか? – loopx

+0

'[a-z] {3、}'を '[a-zA-Z] {10、}'(A-Zの後のスペース)に置き換えてみてください。私はこれをテストしていないので、うまくいくかどうかはわかりません。 Ad @ m – kirb

+0

それは素晴らしい作品です!もう一つのことは、特定の単語を選択から除外できる方法はありますか?たとえば、ページには「スポンサー」などの単語が繰り返し表示されますが、これは自分の選択には含まれません。再度、感謝します! – loopx

0

はここで、任意のnをつかむ完全なGreasemonkeyのスクリプトですちょうど記述からランダムに単語のアンバー、そして少し良く、Googleの検索ページのさまざまなハンドル(彼らはページを取得した方法に応じて、少しDOMを変更する。)

// ==UserScript== 
// @name   _RandomWord from results 
// @include   http://www.google.com/* 
// @require   http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js 
// ==/UserScript== 

function GrabRandomWords() { 
    /*--- Google search results are wrapped in a list with the id "rso". 
     Here, we want just the descriptions in the results, so we know 
     that title and link tag tags can be excluded. 
     (Alas, Google's search results pages vary quite a bit in the 
     detailed structure of their HTML.) 
    */ 
    var descriptText = $("#rso li *:not(a,h1,h2,h3)").text(); 

    //--- Split into words. Change the "{1,}", if short words like "a" are to be excluded. 
    var words   = descriptText.match (/\b(\w{1,})\b/g); 

    //--- Pick 5 random words and store them in an array. 
    if (words) { 
     var ourRandWords = []; 
     for (var J = 0; J < 5; ++J) 
      ourRandWords.push (words[ Math.floor (words.length * Math.random()) ]); 

     alert (ourRandWords); 
    } 
} 

//--- We must wait until page has fully loaded, because the results are usually Ajaxed in. 
window.addEventListener ("load", 
    function() { 
     /*--- Page is "loaded", but results are still not in, still need a short delay. 
      Note that listening for DOMSubtreeModified doesn't seem to work well. 
     */ 
     setTimeout (function() { GrabRandomWords(); }, 666); 
    }, 
    false 
); 
+0

うわ〜これはとてもいいですね。追加のアイデアをありがとう! – loopx

+0

ようこそ。助けてうれしい! –

関連する問題