よろしくお願いします。
見よう見まねで、Webスクレイピングをやろうとしているところです。
ネットで調べるうち、phpQueryというものが容易だと見たので試みています。
このphpQueryを使ってあるサイトから必要な情報だけを抜き出したいのですが、わからないことが2つあります。
require_once("phpQuery-onefile.php"); $url = "https://○○○○"; $html = file_get_contents($url); $msg="今回の課題名は、"; $msg = $msg . phpQuery::newDocument($html)->find(".title")->text() ."です。そして、リーダーは、"; $msg = $msg . phpQuery::newDocument($html)->find(".leader")->text() ."です。そして、副リーダーは、"; $msg = $msg . phpQuery::newDocument($html)->find(".subleader")->text() ."です"; echo $msg;
上記のように書いたのですが、目的通り、クラス名から、課題名とリーダー名、副リーダー名の情報を取得することができました。
Q1)
ここで教えていただきたいのですが、上記の場合、対象サイトには、1度だけ情報を取りに行っていると考えていいのでしょうか?
自分の手でブラウザを操作して移動したりするのでなく、こういうスクリプトを通じて他のサイトの情報を取得する場合、相手のサーバーに負担をかけると法に触れることもあるので頻度に気をつけるべし聞きました。上記のコードを実行するには1秒もかかってない感じなのですが、3度も取得しに行っているとすると、よくないかと思うんです。
いかがでしょうか?
Q2)
<table summary="役割分担表"> <tbody> <tr><td>担当部署:</td><td>第3営業チーム</td><td></td></tr> <tr><td>のべ担当者数:</td><td>(25人)</td><td></td></tr> <tr><td>進捗管理担当者:</td><td><a href="○○○○">システム管理課長</a></td><td></td></tr> <tr>……
対象のHTMLがこのような形で記述されている場合の、「第3営業チーム」「25人」「システム管理課長」をそれぞれ取得したいのですが、どう書けばいいのでしょうか?クラス名を通じての取得しかわからず、困っています。
「html全体を最初から見ていって、”担当部署”という文字があったらその次のtdの内容」みたいな指示の仕方かと思うのですが。
以上2点、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。