1

Web サイトを検索してコンバージョン率を抽出する必要がある課題に取り組んでいます。

レートを単純に一致させることができれば、これをキャプチャして抽出するのは簡単ですが、更新ボタンを押してプログラムに更新されたコンバージョン率を検索させる必要があるため、単にハードコーディングすることはできません検索する一致。

レートの前にあるテキストを照合し、一致した後のすべてのテキストを取得する方法はありますか?

これを行うためのより良い方法があれば、提案も受け付けています。正確な料金がわからない場合に、ウェブサイトから料金を取得する方法を知りたいだけです。料金の形式と料金がサイト内のどこにあるかを知っているだけです。

これが私がこれまでに持っているものです:

String regex = "(?<=EUR'>)\\d+(?:\\.\\d*)?(?=<)";

Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher(?);

while (match.find()) {   
  System.out.println("Found a match: " + match.group(1).toString());  
  System.out.println("Start position: " + match.start(1)); 
  System.out.println("End position: " + match.end(1)); 
} 

パターンの設定方法は理解していると思いますが、最初と最後だけがわかっていて、最後ではない場合、一致文字列に何を入れればよいかわかりません...

私がつかむ必要があるものの例は、以下の行です

<td class='rtRates'><a href='/graph/?from=USD&amp;to=EUR'>0.772000</a></td>

この行のレートを取得する必要がありますが、常に変化します

4

3 に答える 3

0

これだけ使えないの?

EUR'>(\d+(?:\.\d+)?)<

レートはグループ#1で取得されます。これは、既にgroup(1)抽出に使用しているので便利です。;)しかし、真剣に、正規表現にはキャプチャグループがないためgroup(1)、Matcherを呼び出すと例外が発生します。何が得られますか?

psに変更したことに注意して\d*ください\d+。10進数を一致させようとするほとんどの人は、小数点の後に少なくとも1桁必要です。ここでそうでない場合は、先に進んで元に戻してください。

于 2012-10-15T07:45:11.063 に答える
0

正規表現を使用して html を解析しないでください。そうしないと、ヴェロキラプトルが来て食べてしまいます。with class内にある要素のjsoupとクエリ値のようなものを使用します。<a><td>rtRates

于 2012-10-15T06:08:29.060 に答える
0

あなたの表現はあなたが期待するものと一致しているので、あなたの問題が何であるかわかりません(私は思う)。Regexr で参照してください

タグ間のパーツの外観をより柔軟にしたい場合は、これを使用できます。

(?<=EUR'>)[^<]*

[^<]否定文字クラスです。. を除く任意の文字に一致します<。次に、先読みアサーションを削除することもできます。

正規表現で見る

于 2012-10-15T06:51:42.003 に答える