■ このスレッドは過去ログ倉庫に格納されています
プログラミングJavaScriptに詳しいやついる?
- 1 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- .Net MAUIのWebViewClassにJavaScriptの関数機能使えるやつあったから
それ使ってHTMLの情報を取り出したいんだけど
実行ボタン推してみても{}とかになっちゃうんだよね、、、
一応nullじゃないから取得してるとは思うんだけど何なんだこれは、、、
https://youtu.be/hRZXSCENR_Q
- 2 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- 見てないけどデバッグしろ
- 3 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- これって{}が出てくるってことはJson形式で出力されるの?
HTML形式がいいんだが、、、
- 4 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- Stackoverflowにこの記述量レベルで質問してみて欲しい
- 5 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- スクレイピングするのbingの検索結果だったのかよ
それならそっちのAPI使えばいいだろ
- 6 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- コードは?
- 7 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>5
商用販売したいから制限あるAPIはあまり、、、
- 8 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- 全コード載せます
namespace MauiApp1;
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
ii.Source = "https://www.bing.com/";
}
private void txt_Clicked(object sender, EventArgs e)
{
ii.Source=entry.Text;
}
private async void html_Clicked(object sender, EventArgs e)
{
string result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content')");
textBox.Text = result;
}
}
- 9 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- それだとdomオプジェクトだからおかしくなるんじゃね?
.innerHtmlでHTML取得すればいいのでは
- 10 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- iiってやつがWebViewの名前でentryってやつがリンクを貼り付ける領域
txt_Clickedでentryの中の文字を読み取りiiにソースを渡す
html_ClickedでJavaScriptのメソッドでそのサイトのHTMLを読み取り、textBoxに文字を表示するアプリです
- 11 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- private async void html_Clicked(object sender, EventArgs e)
{
string result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content').innerHtml");
textBox.Text = result;
}
}
でやってみたけどなにも反応しなくなった、、、
- 12 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- 単純にそんなidがないんだろうな
- 13 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- 空文字列になってるんじゃね?
document.body.innerHtmlは取得できるの?
- 14 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- なんか別のサイト('b_content'がないサイト)だとnull帰ってくるから動いてはいるんだろうが、、、
中身帰ってこない、、、
- 15 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- document.body.innerHtmlでやってみたけどやっぱり帰ってこないな、、、
bodyにしちゃったからどのサイトでも帰って来なくなった(当たり前だが)
空白文字になっちゃうのかな?
- 16 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- HTMLの階層が深いから帰ってこないとかあるの?
- 17 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- Webブラウザがモバイル用のWebブラウザだからかな?
だれかAndoroidのWebViewでこの機能試したことのある人いる?
- 18 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- これほとんど同じじゃね
https://stackoverflow.com/questions/52339100/why-evaluatejavascriptasync-is-not-being-executed
- 19 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- ローカルホストとか関係ないよね?
- 20 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>18
サンクスちょっと見て見る
- 21 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- いまいち翻訳がわからんけどメインクラスにそのメソッドが入ってないからってことなのか?
- 22 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- よくわからんけどIDEのデバッグ機能とかでwebviewオブジェクトの中身見れたりできんの?
ぬるぽになってないならなんか入ってんだろうけど
- 23 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>22
なぜかできない…
- 24 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- なんかjsじゃないのに混じってるとイライラする
- 25 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- その問題の解決策ではないけどwebviewからhtmlソース自体はプロパティから取れたりしないの?
htmlソースからjs使わずにhtml parserとかでb_content要素取得するとかどうかな
- 26 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- flutterちゃうんか
- 27 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- できたわすまん
textBoxにresultを書き込むところでブレークポイント作って確認した
ただなぜかNullになってる
html集めるところでずっと右往左往してるのかもしれん
- 28 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>25
このWebViewにはそういう関数がないんですわ、、、
この程度の能力しかない
https://docs.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/webview
- 29 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>26
これからの時代は.NET MAUIですぜ?
- 30 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- まず「"test"」ってスクリプトを実行したらtestって結果が取れるの?
- 31 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>28
urlをSouceに設定したら暗黙的にUrlWebViewSourceオブジェクトに変換されるってかいてあるからその中にhtml入るんじゃね
- 32 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>30
すまんそれやったことないんだけど教えて?
document.getElement~の部分をtestにするだけ?
- 33 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- >>32
$"~~~"の部分を"test"にする
- 34 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- 間違えた
- 35 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- "'test'"←こう
- 36 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- なんかjQueryみたいで気持ち悪いな
- 37 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>30
まるまるtestに置き換えるとnullが帰ってきますね
- 38 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>35
シングルコーテーションで囲むと何も帰って来なくなります
- 39 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- >>35のほうも同じ?
- 40 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- そうなのか
- 41 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- nullが返ってくる時もあるのがよくわからないけど>>18みたいにこうしても無理?
var result = ""
Device.BeginInvokeOnMainThread(async() =>
{
result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content').innerHtml");
});
textBox.Text = result;
- 42 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>31
と思うじゃん?
ソース型がString型に入らないからtoString()で変換したらこんなんになるんだよねw
https://imgur.com/r9ms4lj.jpeg
- 43 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>42
デバッグでオブジェクト覗いてみた?
toStringなんて文字列連結にもつかわれるのにhtmlソースなんて返ってきたらびっくらこくわ
- 44 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>41
ダメっぽいな
どのサイトでもnull返さなくなってしまった、、、
- 45 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- これ絶対5ch荒らすスクリプト作ろうとしてるだろ
- 46 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>43
うーんちょっと見てみたけど無さそうでした…
- 47 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>45
そんなゴミみたいなことはしない
画像保存のスクレイピングソフト作ってPython信者に売りつける
奴らツールを作るためのツール作ってイキガッてるからなw
- 48 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- そもそもそのidは存在するの
とりあえずローカルにhtml置いて試してみたら
- 49 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- こうしても何もテキストボックスに表示されない?
private async void html_Clicked(object sender, EventArgs e)
{
try{
string result = await ii.EvaluateJavaScriptAsync($"'test'");
textBox.Text = result;
} catch(Exception ex) {
testBox.Text = ex.Message;
}
}
- 50 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- まだシンセガイジはガイジのままだった
- 51 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- この機能の経緯を話すとまず上の機能ができるソフトを作りたかった
ブラウザのHTMLの取得は.HttpCliantクラスで取得できたんだがこういうJavaスクリプトで新しい画像を読み込むようなサイトでのImgの取得ができなかった
普通ならSelenium使えばいいじゃんになるんだが商用利用を目的にしてるからC#の標準機能でできないかと考えたらブラウザ作ってそれ動かしてHTML取得すればいいじゃんと思い今に至る
WinForm時代のWebBrowserだと今のHTMLの取得はできたみたいだけど.NET MAUIでできないかを考えたところここで躓いてるわけさ
- 52 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>49
何も表示されませんね…
- 53 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- 5ch嵐ツールなら俺のリポジトリに紛れ込ませてあるよ
- 54 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- なんかJavaScriptAsyncの中で止まっちゃってるのかもしんないなぁ…
- 55 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>53
そんなツール作りません
- 56 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- そもそもgetByIdでセレクトしてそんなかのinnerHTMLとか持ってこなきゃいけないんじゃないの
resultに値が出てくるならasyncは成功してるはずだしgetByIdは成功してるってことでしょ
- 57 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
- >>53
Rustのやつ?
- 58 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>48
b_contentはありまぁす!
https://imgur.com/undefined.jpeg
ローカルにhtml置くやり方いまいちわかってないから時間ください
- 59 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- >>56
まぁ('b_content')がない場合はnullが帰ってくるから動いてはいるんだろうね
ただ.innerHtmlを外したらJsonが帰ってくるみたいなんだけど{}で空白になるんよね、、、
- 60 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
- とりあえず今日は寝ます
みんな付き合ってくれてありがとう
進展あったらまた報告するね
もしかしたらWebBrowser別に作る方が早いかもですね
総レス数 60
13 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★