17177
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
SearchRocketbbs(掲示板DL検索)

XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / シスイ
XMLHTTP利用して、ワードプレスのユーザー名とパスワードを入力してログインした先のページのhtmlソースを取得したいのですが、うまくいきません。XMLHTTPで検索すると下記を見つけましたが、オプションにユーザー名とパスワードを指定しても、ログイン先のhtmlソースの取得ができません。何か良い方法ないでしょうか?

 XMLHTTPを使用して、認証の必要なデータにアクセスすることもできる。Openメソッドには、次の例に示すように、ユーザー名とパスワードをオプションの引数として指定できる。基本認証またはチャレンジレスポンス認証(またはその両方)を有効にしたときのIISの動作と同様に、このユーザー名とパスワードは、資格情報を必要とするWebサイト(WWW-Authenticateヘッダーを使用)にのみ適用される。データベース方式の認証を使用するサイト(HotmailやYahooメールなど)の場合は、ユーザー名とパスワードをその他のデータと同様に単純にPOSTする必要がある。

<%
Response.Buffer = True
Dim objXMLHTTP, xml

Set xml = Server.CreateObject("Microsoft.XMLHTTP")

xml.Open "GET", "http://www.4Guysfromrolla.com/", False, _
"Richard", "Welcome"

' Actually Sends the request and returns the data:
xml.Send

Response.Write xml.responseText

Set xml = Nothing
%>
---------------------
【試したコード】

URL1="http://keiritensyoku.net/wp-login.php?"
URL2="&action=edit"

URL=URL1+1035+URL2
ユーザー名=tesu
パスワード=pasu

xh = createoleobj("Msxml2.XMLHTTP")
xh.open("GET", url, FALSE,ユーザー名,パスワード)
xh.send()
source = xh.responseText // utf-8

msg=source
msgbox(msg)

No.356 2019/04/21(Sun) 21:36:45

Re: XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / stuncloud
そこで渡せるのは基本(Basic)認証のユーザー名とパスワードです
wordpressにログインするためにはログインページのリクエストを再現する必要があります
cookieは保持されるはずなので、ログイン後に別のリクエストを送るといったことも可能だと思われます
ログイン時にどのようなリクエストを送るかは、devtoolsでキャプチャしながら実際にログインしてみればわかります

ただその…前回の言い方が悪かったんですかね…
ブラウザを使ったほうが楽ならブラウザを使ってスクレイピングしてください…ログインが必要ならブラウザを使ったほうが楽です

No.357 2019/04/21(Sun) 22:32:33

Re: XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / シスイ
stuncloud様、返信ありがとうございます。ワードプレスでログインした先で記事idとかのデータを取得することが有り、いちいち接続表示して待つのが面倒だったので、XMLHTTPでバックグラウンドでデータの取得ができたらと思ったのですが、難しい感じですね。今までサイト接続してデータ取得関係は、UWSCはIEのcom操作でやっていたのでクロームでできるのはかなり新鮮です。
No.359 2019/04/22(Mon) 12:48:06

Re: XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / シスイ
ログイン時にどのようなリクエストを送るかは、devtoolsでキャプチャしながら実際にログインしてみればわかります
devtoolsとは、クローム上で右クリックの検証からできるやつですよね?メニュータブのnetworkとかで見るんですかね?

No.360 2019/04/22(Mon) 12:52:36

Re: XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / stuncloud
>devtoolsとは、クローム上で右クリックの検証からできるやつですよね?メニュータブのnetworkとかで見るんですかね?
そうです、右クリックの検証あるいはF12で出てくるやつで、Networkでリクエストとレスポンスの詳細が見れるようになります
使い方は解説サイトが多数あるでしょうからそちらでご確認ください

devtoolsはいろんなことができますが、少なくとも
・Element
・Console
・Network
タブくらいは扱えるようにならないと話にならないのでがんばって覚えてください
これがある程度使えるようになればスクレイピング程度でつまづくことはなくなります
つまり、今のシスイさんはそれだけスキルが足りていないということです
なので先ずdevtoolsを徹底的にやりましょう
少し遠回りに感じるかもしれませんが、リターンは大きいですよ

No.361 2019/04/22(Mon) 14:46:30

Re: XMLHTTPでワードプレスログイン先のページのhtmlソース取得について / シスイ
stuncloud様、いつもありがとうございます。
「クロームデベロッパーツール 使い方」で、検索して2ページ目までの各サイトを見てみました。
調査サイトのCSSを保存できたり、自分のファイルをローカルとして登録できたりできるんですね。
もちろん、elomentやcss直接編集できたりと便利ですね。

No.364 2019/04/23(Tue) 13:14:09
window.alertに使い方 / シスイ
下記のコードで試しましたが、comerrorでうまくhello,worldをmsgboxで表示できません。
window.alertの使い方を教えて頂けませんでしょうか??

call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws
driver = WebDriver.Start(WebDriver.Chrome)

textblock js
alert('hello,world');
endtextblock

driver.ExecuteScript(js)

ab=driver.window.alert()

msg=ab
msgbox(msg)

No.358 2019/04/22(Mon) 11:59:27

Re: window.alertに使い方 / stuncloud
> textblock js
> alert('hello,world');
> endtextblock
> driver.ExecuteScript(js)


js構文に間違いはないし出るはずですが
事前にNavigate()してないからじゃないですかね?
起動直後の真っ白な画面だとalertが出ないっぽいです

> comerrorでうまくhello,worldをmsgboxで表示できません。

エラー内容見たら少なくともどの行が原因かは一目瞭然ですよね
> ab=driver.window.alert()
これですよ、むしろコード見ただけでわかりましたよ
あのですね、この window はどっから出てきたんですか?

https://stuncloud.github.io/UwscWebDriver/

ドキュメントは読みましたか?
読んだ上で window が生えてくると思ったんですか?

僕以前書きませんでしたっけ?
webdriverはDOMを直接触るわけではないと
読んでなかったんでしょうか、読んでも理解ができなかった?

シスイさんは確かに初級者で修行中の身みたいなとこはありますよ
でもですね
でもですよ?
コードを書くときはそんなの関係なく、確信をもって書かなきゃだめなんですよ
なんとなく window って付けたら行けるかな?とかはダメなんですよ
いや、別に書いてもいいけどそれで失敗したらそれが間違いだとわかんないとだめなんですよ
当てずっぽうで書いたコードが間違ってることに気付けず他人に丸投げなんてだめなんですよ

さすがにこのレベルは看過できないので僕はいま怒っています
反省してください

No.362 2019/04/22(Mon) 15:16:43

Re: window.alertの使い方 / シスイ
すみませんでした、下記のコードでいけました。
ドキュメントを普通に読めば、できる内容でした、申し訳ありませんでした。
ほんと、つまらない質問をしてしまい自分のレベルの低さに反省しています。


call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws
driver = WebDriver.Start(WebDriver.Chrome)

textblock js
alert('hello,world');
endtextblock

driver.Navigate("http://keiritensyoku.net")
driver.ExecuteScript(js)
ab=driver.GetDialogText()

msg=ab
msgbox(msg)

No.363 2019/04/22(Mon) 20:30:52
webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
stuncloud様のwebdriverありがたく使わせていただいてます。いろいろ使いみちを模索しているのですが、
まず、webdriverを起動するとコマンドプロンプトの画面が表示されるのですが、これを非表示にできないでしょうか?それと、接続したサイト名を取得する方法ってどうすればいいでしょうか?
IEみたいにIE.document.body.innerhtmlとかあればいいのですが、DOMでgetElementByIdとかで指定とかでしょうか?

No.346 2019/04/19(Fri) 12:33:43

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
getid(GET_ACTIVE_WIN)からstatusでサイト名の取得はできたのですが、もっとダイレクトに取得できる方法があれば良いのですが。

接続しているサイト名のurlを取得ができないです。


call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws

driver = WebDriver.Start(WebDriver.Chrome)
driver.Navigate("http://example.selenium.jp/reserveApp/")

// 予約フォーム画面

id=getid(GET_ACTIVE_WIN)

ab=status(id, ST_title)
cd=driver.geturl()
msg=cd
msgbox(msg)

msg0=ab
msgbox(msg0)

No.347 2019/04/19(Fri) 13:19:04

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / stuncloud
> webdriverを起動するとコマンドプロンプトの画面が表示されるのですが、これを非表示にできないでしょうか?

UwscWebDriver.uwsのソースを直接変更してください
> doscmd(cmd, TRUE, TRUE)
の部分を
doscmd(cmd, TRUE, FALSE)
ただし、この方法で実行するとスクリプトが終了してもwebdriverを実行中のcmdが非表示のまま残ります
これを終了させたい場合はタスクマネージャからプロセスを落とす等してください

> 接続したサイト名を取得する方法ってどうすればいいでしょうか?

titleタグから取れます
print driver.FindElement("title").GetText()

> IEみたいにIE.document.body.innerhtmlとかあればいいのですが、DOMでgetElementByIdとかで指定とかでしょうか?

webdriverではDOMを直接触りません、のでgetElementByIdとかはないです

elementの取得には基本的に
driver.FindElement(selector)
driver.FindElements(selector)
を使います
引数にcssセレクタを受けます
例えばidが username であれば driver.FindElement("#username") のようになります
cssセレクタについての説明は長くなるので解説サイトなどを見てください
DOMであれば「querySelector」がcssセレクタを使うので、これの解説も参考になると思います

> 接続しているサイト名のurlを取得ができないです。
> cd=driver.geturl()


cd=driver.GetUrl()
としてください
実装がjscriptに依存しているので、その制限を受けます
つまりメソッド名は大文字小文字まで一致している必要があります
(モジュール側である程度対処することは可能ですが、やらない方針です)

あと、ちょっと原因がわかってないんですが
GetUrl()だと今表示しているページのURLを返さないこともある?ようで、その場合は
url = driver.ExecuteScript("return location.href;")
のようにブラウザ上でjavascriptを実行させて取得するという手もあります

No.348 2019/04/19(Fri) 14:02:33

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
stuncloud様、返信ありがとうございます。

>doscmd(cmd, TRUE, FALSE)
非表示にはできるが、ウィンドウ自体は残っているということですね。


>print driver.FindElement("title").GetText()
下記のコードやってみたのですが、何も取得できないです。

---------------------
[試したコード]
call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws

// webdriverオブジェクトを得る
driver = WebDriver.Start(WebDriver.Chrome)

// この掲示板を開く
driver.Navigate("http://www3.rocketbbs.com/601/siromasa.html")

a=driver.FindElement("title").GetText()
msg=a
msgbox(msg)
---------------------

>cd=driver.GetUrl()
うまくできました。

No.349 2019/04/19(Fri) 15:05:12

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / stuncloud
> >print driver.FindElement("title").GetText()
> 下記のコードやってみたのですが、何も取得できないです。


すいません、どうやらheadにある要素はダメ?みたいですね
なのでこれもjavascriptで対処しましょう

title = driver.ExecuteScript("return document.title;")

No.350 2019/04/19(Fri) 17:15:08

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
>title = driver.ExecuteScript("return document.title;")
無事できました、ありがとうございます。

サイトのhtmlソースを取得したいと思い下記やってみたのですが、うまくいきません。どこがまちがっているのでしょうか?

html = driver.ExecuteScript("return document.body.innerHTML;")

msg=html
msgbox(msg)

No.351 2019/04/19(Fri) 19:33:02

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / stuncloud
こっちでは取得できてます

使ってるブラウザはchromeですが?
chromeのバージョンとchromedriverのバージョンが合っていないと正常に動かない場合があります
バージョンの問題が無い場合は以下を実行してprintされたものを教えてください

WebDriver.Debug(TRUE)
// ↑これを WebDriver.Start の前に書いておく

// ↓これを driver.ExecuteScript した後に書く
for log in WebDriver.GetLog()
 if pos("/execute/sync", log.api) then
  print log.status + " " + log.statusText
  print log.response
  break
 endif
next



ところで
スクレイピングがしたいのか自動操作がしたいのかはわかりませんが
HTML全体を文字列で取得する、というのはWebページの解析のためなのでしょうか
だとするとそれは非常に筋が悪いです
そういうことはすべきではありません

では、どうやって解析するのか?

F12キー押下で出てくる開発者ツール(devtools)を使います
どのブラウザのものでもDOMツリーが見ることができて
ConsoleからDOM操作を試すこともできます

コードを書く前に開発者ツールを使って
・操作対象エレメントを探す
・対象エレメントの属性(idとか)を調べる
・必要であればconsoleで実際にやりたい操作を試す
というようなことを十分に行います
そしてやるべきことに確証を持てたところで初めて実際にコードを書くようにします

F12の開発者ツールを使ったことがないのであれば、はじめは苦労するでしょう
しかし、Web関連で何かをやる以上開発者ツールが使えないというのは論外です
必ず使えるようになりましょう

No.352 2019/04/19(Fri) 22:42:39

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
stuncloud様、htmlソース取得できました。ありがとうございます。
print文では、下記が出力されました。
200 OK
{"sessionId":"f5f0303528286ed0247ad6311385faf1","status":0,"value":"UWSC 仮 掲示板"}


htmlソース取得の目的ですが、スクレイピングで特定のデータを取得することです。
htmlソース取得して、そこから正規表現でパターンを指定してデータを取得しています。
今まで、IEでスクレイピングやっていたのですがクロームでやった方が良いかもって思って、
stuncloud様のwebdriverでやろうと思ってる段階です。

でも、クロームだと!IE.busy AND IE.readystate = 4が使えないのでどうかなとも思ってます。
uwscでスクレイピングするのに、一番効率的な方法ってお考えを聞かせて頂ければありがたいです。

No.353 2019/04/20(Sat) 12:23:56

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / stuncloud
> htmlソース取得の目的ですが、スクレイピングで特定のデータを取得することです。
> htmlソース取得して、そこから正規表現でパターンを指定してデータを取得しています。

であればIEなりchromeなりのブラウザを介する必要があまりないと思います
Msxml2.XMLHTTP などを使ってHTMLソースだけを取得すればいいからです
(ajax等でDOMが動的に更新されないようなページに限りますが)

先のレスでも書きましたが
スクレイピングで取得したい情報というのは必ず決まった場所に配置されているので
その情報を持つエレメントをFindElement/FindElementsし、必要な値を抜き出せばいいのです
コードの目的が明確になり、Webページに変更が加えられたとしても対応がしやすくなります

> でも、クロームだと!IE.busy AND IE.readystate = 4が使えないのでどうかなとも思ってます。
そういうのはありませんね、というのもwebdriverが勝手に待ってくれるので基本的に必要がないからです
ただ、タイムアウトがあるのでロードに時間のかかるページではうまくいかないこともあります
その場合は

repeat
 element = driver.FindElement(selector)
until element <> NULL

を挟みます
ここで指定するセレクタは情報を抜き出したいエレメントのものにします

function WaitElement(driver, selector)
 repeat
  result = driver.FindElement(selector)
 until result <> NULL
fend

こんな関数を定義しても良いでしょう

> uwscでスクレイピングするのに、一番効率的な方法ってお考えを聞かせて頂ければありがたいです。
何を使うかということであれば、ヘッドレスchromeを使うのが良いでしょう
https://github.com/stuncloud/UwscWebDriver/wiki/Headless-chrome%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B

どのようにやるかということであれば、これまでに何度も書いていますね
使っている道具の機能を十分に使えるようにしましょう

No.354 2019/04/20(Sat) 15:30:40

Re: webdriverで指定サイト接続で接続したサイト名を取得する方法 / シスイ
例えば、ヤフーのトップページにある今夜の天気の(札幌)を取得したいとします。
この場合って、id="pbwTd"なので、#pbwTdをFindElementで指定してGetText()で取得でうまくできました。
開発者ツール利用してcssセレクターを確認してってけっこう大変ですね。
開発者ツール使いこなして、html分析力を高めていったらスクレイピングの精度もあがるような気がします。
IEのスクレイピングだと、Msxml2.XMLHTTPを利用し正規表現でバックグラウンドで取得とヘッドレスchromeでのFindElementでcssセレクター指定でのスクレイピングだと
stuncloud様の見解としては、ヘッドレスchromeの方が効率的ということですね。
当分のスクレイピングは、ヘッドレスchromeでのFindElementのcssセレクター指定でやっていきたいと思います。

【試したコード】

call UwscWebDriver.uws

textblock capabilities_headless
{
"capabilities": {
"firstMatch": [ {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "headless", "disable-gpu" ]
}
} ]
},
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "headless", "disable-gpu" ]
}
}
}
endtextblock

driver = WebDriver.Start(Webdriver.Chrome, 9515, capabilities_headless)


driver.Navigate("https://www.yahoo.co.jp/")

ab=driver.FindElement("#pbwTd")

msg=ab.GetText()
msgbox(msg)

---------------------
開発者ツールで今夜の天気の部分をコピーしたのが下記。

<div id="pbwTd" class="pbwDtl">
<h5 class="personalBoxWeatherTitle"><a href="https://rdsig.yahoo.co.jp/_ylt=A2RCxBBL7bpcOFIA.K.JBtF7/RV=2/RE=1555840715/RH=cmRzaWcueWFob28uY28uanA-/RB=goQefDsAyVHis9jDi843Az2BwZk-/RU=aHR0cHM6Ly93ZWF0aGVyLnlhaG9vLmNvLmpwL3dlYXRoZXIvanAvMWIvMTQwMC8xMTAxLmh0bWwA/RK=0/RS=0DjJw.CCCIEL6eY8p4Av8hI6zmg-">;今夜の天気</a></h5>
<ul>
<li class="pbwarea">(札幌)</li>
<li class="pbwicon">
<a href="https://rdsig.yahoo.co.jp/_ylt=A2RCxBBL7bpcOFIA.a.JBtF7/RV=2/RE=1555840715/RH=cmRzaWcueWFob28uY28uanA-/RB=goQefDsAyVHis9jDi843Az2BwZk-/RU=aHR0cHM6Ly93ZWF0aGVyLnlhaG9vLmNvLmpwL3dlYXRoZXIvanAvMWIvMTQwMC8xMTAxLmh0bWwA/RK=0/RS=0DjJw.CCCIEL6eY8p4Av8hI6zmg-">;
<img width="33" height="20" src="//s.yimg.jp/images/weather/general/newforecast/ytop/size66/moon_clouds_st.png" alt="晴時々曇">
</a>
</li>
<li class="pbwtemperature">
<span class="high">11℃</span>/
<span class="low">2℃</span>
</li>
<li class="pbwrprobability bdrB2">0%</li>
</ul>
</div>

No.355 2019/04/20(Sat) 19:14:52
ワードプレスの記事編集画面の編集というボタンをクリックする方法 / シスイ
以前は、名前をバラバラに投稿していておさがわせしてしまい申し訳ありません。これからは、シスイという名前でやっていくので宜しくお願いします。
ワードプレスの記事編集画面の編集というボタンをクリックする方法ですが、いろいろ試して見ましたがうまくいきません。web記録だとIELink(IE,"編集")となり複数の編集があるので特定ができない。
編集のボタンを押す方法が何かないでしょうか?

【html分析ツールで調査した結果】
// doc=IE.document
// doc.item(35).click()
// doc.all.tags("span").item(35).outerHTML


下記試したこと。

【部分ソース】
<div class="hide-if-no-js" id="edit-slug-box">
<strong>パーマリンク:</strong>
<span id="sample-permalink"><a href="http://sengyou.local/2019/03/20/__trashed-52__trashed/">http://sengyou.local/2019/03/20/<span id="editable-post-name">__trashed-52__trashed</span>/</a></span>
‎<span id="edit-slug-buttons"><button class="edit-slug button button-small hide-if-no-js" aria-label="パーマリンクを編集" type="button">編集</button></span>
<span id="editable-post-name-full">__trashed-52__trashed</span>
</div>

IE=GetActiveOLEObj("InternetExplorer.Application")
doc=IE.document
doc.item(35).click()
---------------------
IE=GetActiveOLEObj("InternetExplorer.Application")

// IE.document.getElementById("edit-slug-buttons").click():×
// IE.document.getElementById("sample-permalink").click():×
// IE.document.getElementById("editable-post-name").click():×
// IE.document.getElementById("editable-post-name-full").click():×

No.343 2019/04/18(Thu) 11:26:27

Re: ワードプレスの記事編集画面の編集というボタンをクリックする方法 / stuncloud
> 以前は、名前をバラバラに投稿していておさがわせしてしまい申し訳ありません。これからは、シスイという名前でやっていくので宜しくお願いします。
非難するような意図はなく謝っていただくようなつもりでもなかったのですが、いらぬプレッシャーを掛けてしまったようでこちらこそすいませんでした
今後もどしどし質問なさってください

クリックしたい要素の上にidが振られているようなのでそれを起点にするのが良いでしょうね
【部分ソース】で言えば

// idがedit-slug-buttonsのspan配下のbutton(1つ目)をクリック
ie.document.getElementById("edit-slug-buttons").getElementsByTagName("button").item(0).click()

// 最初の子要素を対象とするfirstChildでも良い
ie.document.getElementById("edit-slug-buttons").firstChild.click()

// セレクタで指定すれば一発
ie.querySelector("#edit-slug-buttons button").click()

などのパターンで行けますね

No.344 2019/04/18(Thu) 12:33:50

Re: ワードプレスの記事編集画面の編集というボタンをクリックする方法 / シスイ
stuncloud様、返信ありがとうございます。stuncloudには、私がuwsc初心者の頃からかなり助けて頂きおかげでプログラミングの実力もだいぶんできるようになりました。

>非難するような意図はなく謝っていただくようなつもりでもなかったのですが、いらぬプレッシャーを掛けてしまったようでこちらこそすいませんでした
今後もどしどし質問なさってください

ありがとうございます、作業していてググってもなかなか分からないことが多いので助かります。

クリックしたい要素の上にidが振られているようなのでそれを起点にするのが良いでしょうね
【部分ソース】で言えば


>// idがedit-slug-buttonsのspan配下のbutton(1つ目)をクリック
ie.document.getElementById("edit-slug-buttons").getElementsByTagName("button").item(0).click()

>// 最初の子要素を対象とするfirstChildでも良い
ie.document.getElementById("edit-slug-buttons").firstChild.click()

うまくできました。ありがとうございます。

// セレクタで指定すれば一発
>ie.querySelector("#edit-slug-buttons button").click()

下記でいけました。ありがとうございます。
ie.document.querySelector("#edit-slug-buttons button").click()

No.345 2019/04/18(Thu) 13:03:56
UwscWebDriver 0.2.0 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.2.0

No.339(http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&mode=pickup&no=339)
で言っていたRemoteWebDriverに対応しました

導入方法
https://github.com/stuncloud/UwscWebDriver/wiki/%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%81%AEWebDriver%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B

No.342 2019/04/08(Mon) 16:47:40
UwscWebDriver 0.1.3 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.1.3

Firefoxが動かせるようになりました
※ 実は今まで動いてませんでした…ぜんぶgeckodriverの独自仕様が悪い

また、Chromeをヘッドレスモードで動かす方法を書きました (これは0.1.2から
https://github.com/stuncloud/UwscWebDriver/wiki/Headless-chrome%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B
※ スクレイピングなんかに便利

No.337 2019/04/01(Mon) 13:08:47

Re: UwscWebDriver 0.1.3 / sedon
stuncloud様、いつも存在感の大きさを感嘆拝見させていただいております。
ヘッドレスモードで動かせるってことは、Macでも使えるってことになりますでしょうか。

No.338 2019/04/06(Sat) 20:35:22

Re: UwscWebDriver 0.1.3 / stuncloud
UWSCがWindowsアプリなので基本的にはWindowsでの利用しか想定していません
UWSCをwineで動かすことも可能なようなので、あるいはなんとかなるかもしれませんが…

mac上のwebdriverに対してWindowsからリモートで操作というのは仕組み上可能なはずですが、現在のUwscWebDriverの実装ではそれに対応できないと思われるので残念ながらその線もないです
リモート対応もいずれやっていきたいですね

No.339 2019/04/06(Sat) 22:31:30

Re: UwscWebDriver 0.1.3 / satocha
sedon様
>Macでも使えるってことになりますでしょうか
「macos chromedriver python headless」あたりをキーワードに検索するといろいろ情報が出てきます。
中でも、「chrome ヘッドレスの環境構築(Mac編)」(https://rooter.jp/web-crawling/setup-headless-chrome-mac/)は細かく情報が書かれていました。MACユーザーではないので確かめてはいませんが。

No.340 2019/04/07(Sun) 09:07:33

Re: UwscWebDriver 0.1.3 / sedon
stuncloud様、satocha様、素晴らしい情報をありがとうございます。
令和の時代になっても、進化を期待できそうですね。

No.341 2019/04/07(Sun) 21:57:28
(No Subject) / たっぷ
uwscが面白かったので作ってみました
クラスも書けないベタ書きから少しずつ修正して動くようになりました
ちゃんと動かないかもしれませんが誰か試してもらえるとうれしいです

http://back-of-backyard.blog.jp/archives/ばっくやーど?

No.336 2019/03/31(Sun) 00:12:56
(No Subject) / まつこり
Rayna さま、回答ありがとうございます。

思っている動作となることが確認できました。
ヘルプドキュメントの読み込みが足りてませんでした・・

また、自身のスクリプトを出力する内容のサンプルスクリプトも
とても参考になりました。

No.334 2019/03/30(Sat) 23:52:56

Re: / まつこり
すいません。
本件、1つ前のレスとなります。

No.335 2019/03/30(Sat) 23:56:56
特殊文字のままテキストに書き出す方法について / まつこり
uwscのコーディング内容をuwscで出力したい場合、読み込み元の内容をそのまま出力する方法が思いあたりません。お知恵をいただけないでしょうか?

ex.)
if a = "<#DBL>" then
b = b + "<#CR>"

上記のような内容のテキストをuwsc(FOPEN,FGET,FPUT)で出力した場合、

1行目はif a = """ then と出力され

2行目は
b = b + "
"

と出力されてしまいます。

現状では、テキストエディターの置換機能で読み込み元のuwsc特殊文字を別の値に変換、uwsc処理後の出力ファイルに対して変換の戻しを行うことでしか、実現できていません。
uwscのみでの実現はできないものでしょうか?

No.332 2019/03/30(Sat) 19:03:27

Re: 特殊文字のままテキストに書き出す方法について / Rayna
>>332 まつこり さん

 Option パラメータに SpecialChar を指定すると特殊文字は変換されません

 //| No332.uws |/////////////////////////////////////////
 //|
  Option SpecialChar
  Const PATH_THIS_UWS = GET_CUR_DIR+"\"+GET_UWSC_NAME
  Dim fid, sText, wid
  Dim aExPrm[] = "notepad.exe", EMPTY
  TextBlock tsSrc
  if a = "<#DBL>" then
  b = b + "<#CR>"
  EndTextBlock

  //| TextBlock定数 から読み込み |//
   MsgBox(tsSrc)

  //| 文字列リテラルで指定したものは条件付きで可(追記:※1, ※2) |//
   Const csSrc1 = "b = b + <#DBL><#CR><#DBL>"
   Dim vsSrc1 = "b = b + <#DBL><#CR><#DBL>"
   Const csSrc2 = "b = b + <#"+"DBL><#"+"CR><#"+"DBL>"
   Dim vsSrc2 = "b = b + <#"+"DBL><#"+"CR><#"+"DBL>"
   MsgBox("Const csSrc1: "+csSrc1) // 不可
   MsgBox("Dim vsSrc1: "+vsSrc1) // 不可
   MsgBox("Const csSrc2: "+csSrc2) // 可
   MsgBox("Dim vsSrc2: "+vsSrc2) // 可

   aExPrm[1] = "<#DBL>"+PATH_THIS_UWS+".txt"+"<#DBL>"
  //| FGet でファイルから読み込み |//
   fid = FOpen(PATH_THIS_UWS, F_READ)
    sText = FGet(fid, F_ALLTEXT)
   FClose(fid)
   MsgBox("FGet: "+sText)

  //| FPut でファイルに書き込み |//
   fid = FOpen(PATH_THIS_UWS+".txt", F_WRITE)
    FPut(fid, sText, F_ALLTEXT)
   FClose(fid)
   wid = Exec(Join(aExPrm))
   While Status(wid, ST_ISID)
    Sleep(0.001)
   WEnd

   aExPrm[1] = "<#DBL>"+PATH_THIS_UWS+".ini"+"<#DBL>"
  //| WriteIni でファイルに書き込み |//
   sText = Split(tsSrc, "<#CR>")[0]
   WriteIni("sec", "key", sText, PATH_THIS_UWS+".ini")
   wid = Exec(Join(aExPrm))
   While Status(wid, ST_ISID)
    Sleep(0.001)
   WEnd

  //| ReadIni でファイルから読み込み |//
   MsgBox(ReadIni("sec", "key", PATH_THIS_UWS+".ini"))

  //| デモ用に作成したファイルを削除 |//
   DeleteFile(PATH_THIS_UWS+".txt")
   DeleteFile(PATH_THIS_UWS+".ini")
 //|
 ////////////////////////////////////////////////////////
---
追記
 ※1
  文字列リテラルで指定したものについて追記
 ※2
  文字列リテラルでも特殊文字として扱わない方法がありました
   http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&mode=pickup&no=383

No.333 2019/03/30(Sat) 21:06:16
deeplearningとAI / sel
近い所にあるpythonですが、UwscWebDriverは、将来近づけそうですか。
とても期待している者です。

No.328 2019/03/30(Sat) 00:40:02

Re: deeplearningとAI / stuncloud
ご期待のところ残念ですが、深層学習も人工知能もpythonも全く関係がないので未来永劫近づくことはないです
No.329 2019/03/30(Sat) 01:49:43

Re: deeplearningとAI / sel
お忙しい所、回答ありがとうございます、承知いたしました。
Uwscの開発が止まってしまったので、WebDriverの進化に期待しましたが、RPAは、
ハードルの低い他のソフトに依存することになりそうです。

No.330 2019/03/30(Sat) 09:36:57

Re: deeplearningとAI / stuncloud
なにか勘違いされてるようですが、WebDriverはそれを仲介してブラウザ上でWebサイトやアプリケーションのテストを行うためだけのものです
それ以上の機能は提供されません

もちろん他の技術(それこそ深層学習や人工知能でもいいでしょう)と組み合わせて使うことは可能です
しかし、それらをもともとから組み込めというのは乱暴です
UWSCWebDriverも単にUWSCからWebDriverを簡単に扱えるようにするだけのものです
簡単と言ってもコードを書く能力は求められます
なので、そこにハードルの高さを感じる人へ向けたものではないということになります

UWSCは既に終焉に向かっていると言っても間違いではないでしょう
しかしそれでもUWSCを使い続けている、UWSCを愛する人たちへの一助となれるように作られたのがUWSCWebDriverです
言わば過去への執着であり、未来へ向かうものではありません
先を見据えるなら、別の道へ進んでください

No.331 2019/03/30(Sat) 14:22:26

SearchRocketbbs(掲示板DL検索)

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
70/200件 [ ページ : << 1 2 3 4 5 6 7 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS