おなまえ
Eメール
タイトル
コメント
参照URL
添付File
暗証キー (英数字8文字以内)
画像認証 (右画像の数字入力) 投稿キー
文字色
画像のサイズををそろえたいです

2つのサイトから取得した画像のサイズをそろえたいです。
どうすればいいですか。
また、2つ目のサイトhttps://www.hmv.co.jp/news/top/1_100/から取得した文と取得サイト情報の文の間に大きな空白部分ができてしまいます。これを無くすことはできませんか。
よろしくお願いします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>音楽CD・DVD情報サイト</title>

<style>
div {
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 20px 50px 50px 50px;
color: #ff6600;
}
p.data_image img {
width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./img-logo-nmnl.gif");
}

</style>
</head>
<body>
<h1>音楽CD・DVD情報サイト</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.inMdl-atclHeadlineDefCell'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
$string = pq($row)->find('.image')->find('img').'<br>';
$string = utf8_encode($string);
$new_str = str_replace('%E2%80%BE', '~', $string);
echo $new_str;
}
echo '</div>';

?>

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.hmv.co.jp/news/top/1_100/";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.list'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.thumbnailBlock')->find('img').'<br>';

}
echo '</div>';
?>
</body>
</html>

上田日花里 2021/01/12(Tue) 02:47 No.955 [返信]
Re:
返信遅くなり申し訳ありません.
CSSの部分に,
img {
object-fit: cover;
width: 200px;
height: 150px;
}
を追加しています.


コードを以下のように変更してください.
確認お願いします.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>音楽CD・DVD情報サイト</title>

<style>
div {
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 20px 50px 50px 50px;
color: #ff6600;
}

img {
object-fit: cover;
width: 200px;
height: 150px;
}

body {
background: #f0f8ff;
background-image: url("./img-logo-nmnl.gif");
}

</style>
</head>
<body>
<h1>音楽CD・DVD情報サイト</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.inMdl-atclHeadlineDefCell'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
$string = pq($row)->find('.image')->find('img').'<br>';
$string = utf8_encode($string);
$new_str = str_replace('%E2%80%BE', '~', $string);
echo $new_str;
}
echo '</div>';

?>

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.hmv.co.jp/news/top/1_100/";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.list'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.thumbnailBlock')->find('img').'<br>';

}
echo '</div>';
?>
</body>
</html>
TA-長谷川 2021/01/12(Tue) 10:58 No.957
Re:
返信ありがとうございます。
画像のサイズをそろえることができました
しかし、取得サイト情報の文と2つ目のサイトhttps://www.hmv.co.jp/news/top/1_100/から取得した文の間の大きな空白部分がまだ残ってしまいます。これを無くすことはできませんか。
上田日花里 2021/01/12(Tue) 11:20 No.958
Re:
以下のコードに変更お願いします.
listクラスが他の部分にも存在していたので,中身が空のものが出力されていました.
固有のクラスを指定してみるとうまくいきます.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>音楽CD・DVD情報サイト</title>

<style>
div {
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 20px 50px 50px 50px;
color: #ff6600;
}

img {
object-fit: cover;
width: 200px;
height: 150px;
}

body {
background: #f0f8ff;
background-image: url("./img-logo-nmnl.gif");
}

</style>
</head>
<body>
<h1>音楽CD・DVD情報サイト</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.inMdl-atclHeadlineDefCell'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
$string = pq($row)->find('.image')->find('img').'<br>';
$string = utf8_encode($string);
$new_str = str_replace('%E2%80%BE', '~', $string);
echo $new_str;
}
echo '</div>';

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.hmv.co.jp/news/top/1_100/";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.newsBlockList ']->find('li');
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.thumbnailBlock')->find('img').'<br>';

}
echo '</div>';
?>
</body>
</html>
TA-長谷川 2021/01/12(Tue) 11:46 No.959
Re:
作りたかった形にすることができました。
本当にありがとうございます。
上田日花里 2021/01/12(Tue) 12:14 No.960
エラーの原因が分かりません

エラーが出ます。
どの部分に問題があるのかわかりません。



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
}

body{
background-image:url("./japan.jpg");
}
</style>
</head>
<body>
<h1>Web情報システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://weather.yahoo.co.jp/weather/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".newsFeed_list"];
echo"<div>";
echo fullpath($news["li"],$url);
echo"</div>";
?>
</body>
</html>

難波治輝 2021/01/12(Tue) 01:19 No.952 [返信]
Re: エラーの原因が分かりません
サイト先を見る限り,特に,絶対パスに変換する必要なさそうでした.
下記のように,
echo fullpath($news["li"],$url);
を変更してみてください.
エラーはなくなると思います.

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://weather.yahoo.co.jp/weather/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".newsFeed_list"];
echo"<div>";
echo $news;
echo"</div>";
?>
TA長谷川 2021/01/12(Tue) 02:18 No.954
無題
解決しましたありがとうございます
難波治輝 2021/01/12(Tue) 03:24 No.956
無題

<!DOCUTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム </title>
<style>
div {
float: left;
background: #ffffff;
width: 500px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 250px;
height: auto;
}
body {
background: #ffffff;
background-image: url("./images.jpg");
}
</style>
</head>
<body>

<h1>what do kids in Japan want for Santa ?</h1>


<h3>
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '(from:'.$doc['title']->text().')'.'<br>';
?>
</h3>



<h1>BOY
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/gender=male/";
$doc = phpQuery::newDocumentFileHTML($url);
?>
</h1>

<?php
echo '<div>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc[".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc[".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

?>


<h1>GIRL
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/gender=female/";
$doc = phpQuery::newDocumentFileHTML($url);
?>
</h1>

<?php
echo '<div>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc[".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc[".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

?>



</body>
</html>


ブロック名のBOYSとGIRLSをdivの四角の中に入れたいのですがどうすればいいのでしょうか?

石橋孝太郎 2021/01/11(Mon) 01:19 Home No.898 [返信]
Re: 無題

<h1>BOY
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/gender=male/";
$doc = phpQuery::newDocumentFileHTML($url);
?>
</h1>

<?php
echo '<div>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc[".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc[".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';
?>



<h1>GIRL
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/gender=female/";
$doc = phpQuery::newDocumentFileHTML($url);
?>
</h1>

<?php
echo '<div>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc[".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc[".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

?>

以下のように変更してみてください.


<?php
require_once("phpQuery-onefile.php");
$url1 = "https://ranking.rakuten.co.jp/daily/566382/gender=male/";
$url2 = "https://ranking.rakuten.co.jp/daily/566382/gender=female/";
$doc1 = phpQuery::newDocumentFileHTML($url1);
$doc2 = phpQuery::newDocumentFileHTML($url2);

echo '<div>';
echo '<h1>BOY'BOYS'</h1>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc1 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc1 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

echo '<div>';
echo '<h1>GIRL</h1>'
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc2 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc2 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';
?>
TA-長谷川・本信 2021/01/11(Mon) 17:22 No.923
Re: 無題
ありがとうございます。
Parse error: syntax error, unexpected 'for' (T_FOR), expecting ',' or ';' in /home/s256016/public_html/exsi2020/reportnew.php on line 60

と出たのですがFORが認識されていないということでしょうか
解決方法が分かりません。
石橋孝太郎 2021/01/11(Mon) 21:08 Home No.931
Re: 無題
色々とミスがありました.
下記でどうでしょうか?
<?php
require_once("phpQuery-onefile.php");
$url1 = "https://ranking.rakuten.co.jp/daily/566382/gender=male/";
$url2 = "https://ranking.rakuten.co.jp/daily/566382/gender=female/";
$doc1 = phpQuery::newDocumentFileHTML($url1);
$doc2 = phpQuery::newDocumentFileHTML($url2);

echo '<div>';
echo '<h1>BOYS</h1>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc1 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc1 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

echo '<div>';
echo '<h1>GIRL</h1>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc2 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc2 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';
TA-長谷川 2021/01/11(Mon) 21:44 No.936
Re: 無題
修正した全ソースコードを下記に載せておきます.
先ほど回答したコードの末尾に「?>」が抜けていました.
確認お願いします.

<!DOCUTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム </title>
<style>
div {
float: left;
background: #ffffff;
width: 500px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 250px;
height: auto;
}
body {
background: #ffffff;
background-image: url("./images.jpg");
}
</style>
</head>
<body>

<h1>what do kids in Japan want for Santa ?</h1>


<h3>
<?php
require_once("phpQuery-onefile.php");
$url = "https://ranking.rakuten.co.jp/daily/566382/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '(from:'.$doc['title']->text().')'.'<br>';
?>
</h3>



<?php
require_once("phpQuery-onefile.php");
$url1 = "https://ranking.rakuten.co.jp/daily/566382/gender=male/";
$url2 = "https://ranking.rakuten.co.jp/daily/566382/gender=female/";
$doc1 = phpQuery::newDocumentFileHTML($url1);
$doc2 = phpQuery::newDocumentFileHTML($url2);

echo '<div>';
echo '<h1>BOYS</h1>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc1 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc1 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';

echo '<div>';
echo '<h1>GIRL</h1>';
for($i=0;$i<10;$i++) {echo "<p class='image-contents'>";
echo $doc2 [".rnkRanking_image > .rnkRanking_imageBox"]->find("a:eq(".$i.")")."<br />";
echo $doc2 [".rnkRanking_upperbox > .rnkRanking_itemName"]->find("a:eq(".$i.")")."<br />";
echo "<br />";
}
echo '</div>';
?>



</body>
</html>
TA-長谷川 2021/01/11(Mon) 21:51 No.937
Re: 無題
できました!
助かりましたありがとうございます。
石橋孝太郎 2021/01/12(Tue) 00:44 Home No.951
グラフの表示方法がわかりません

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Webページ検索システム</title>
<style>
body {
background: #f808080;
}
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
echo "<div>";
$url = "https://www3.nhk.or.jp/news/special/coronavirus/local-tokyo/";
$doc = phpQuery::newDocumentFileHTML($url);
echo'<h2>コロナウイルスの感染者数</h2><br><br>';
echo $doc['.graph__outer graph__outer--infection-viz-tokyo__graph'];
echo $doc['#highcharts-ufb9nj6-0']->find("img:eq");
echo "</div>";
?>
</body>
</html>

としているのですが、グラフが表示されません。どのようにすればいいですか。

齊藤大翼 2021/01/11(Mon) 10:45 No.901 [返信]
Re:
こんにちは,多分,斎藤さんは学籍番号が・・・108だと思うのですが,
http://webdesign.center.wakayama-u.ac.jp:60080/~s256108/exsi2020/report.php
にページがない状態になっています.
最終課題提出のためと,ページを見ながら修正箇所を指摘しようと思うので,
report.phpを作成してください.
TA河島 2021/01/11(Mon) 16:37 No.919
Re: 表示方法がわかりません
すいません、indexのまま課題を進めていました。
reportに直したので再度確認お願いします。
齊藤大翼 2021/01/11(Mon) 23:13 No.945
グラフの表示方法がわかりません
こんばんは,TAの河島です.
今,斎藤さんが引用しようとしているサイトの画像,映像は
svgという物を使っています.
簡単に確認したのですが,今回授業で扱っているpathChanger.phpとphpQuery-onefile.phpはsvgには対応していないので,
このページを自分のページで再現するには難しいと考えられます.
なので,どうか一度他のページを探してみてください.
TA河島 2021/01/12(Tue) 00:02 No.949
表示方法がわかりません
ほかのページを探して再度やり直してみたのですが、表示できません。どのように改善すればよいですか。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Webページ検索システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
echo "<div>";
$url = "https://www.asahi.com/special/coronavirus/tokyo/";
$doc = phpQuery::newDocumentFileHTML($url);
echo'<h2>コロナウイルスの感染者数</h2><br><br>';
$img = $doc['.date_bpx_inner']->find("img:eq");
echo "</div>";
?>
</body>
</html>
齊藤大翼 2021/01/12(Tue) 00:43 No.950
画像が表示されません

文字化けしてしまったので、楠根弘稀さんの質問を参考に$charset = 'SJIS'を書き足しました。すると文字化けは治ったのですが、変更前まで正常に表示されていた画像がすべて絵文字になってしまい、正常に表示されなくなってしまいました。どうすればよいでしょうか。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
foreach($data as $row){
echo pq($row)->find('.dat')->text().'<br>';
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.image')->find('img').'<br>';
}
echo '</div>';


?>
</body>
</html>

上田日花里 2021/01/11(Mon) 02:29 No.899 [返信]
Re: 画像が表示されません
TAの本信です.
imgのurlの文字コードはおそらくUTF-8なので,変換する必要があります.
しかし,「〜」のところは元に変換できないので,置換も行ってください.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
foreach($data as $row){
echo pq($row)->find('.dat')->text().'<br>';
echo pq($row)->find('.title')->text().'<br>';

/* 修正1 */
$string = pq($row)->find('.image')->find('img').'<br>';
$string = utf8_encode($string);
$new_str = str_replace('%E2%80%BE', '~', $string);
echo $new_str;

}
echo '</div>';


?>
</body>
</html>
TA本信 2021/01/11(Mon) 17:06 No.920
Re: 画像が表示されません
無事に画像を表示させることができました。
ありがとうございます。
上田日花里 2021/01/11(Mon) 23:53 No.948
繰り返しができません

1種類目の文→2種類目の文→画像の繰り返しにしたいのですが、1種類目の文すべて→2種類目の文すべて→画像すべてのようにそれぞれがまとまって表示されてしまいます。どうすればいいですか。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
foreach($data as $row){
echo pq($row)->find('.dat')->text().'<br>';
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.image')->find('img').'<br>';
}
echo '</div>';


?>
</body>
</html>

上田日花里 2021/01/11(Mon) 12:32 No.902 [返信]
Re: 繰り返しができません
こんにちは,
まずは,学籍番号と,サイトのurlを教えていただいてもよろしいでしょうか?
TA河島 2021/01/11(Mon) 16:07 No.911
Re: 繰り返しができません
返信ありがとうございます。

学籍番号:60256030
URL:https://tower.jp/article/campaign

よろしくお願いいたします。
上田日花里 2021/01/11(Mon) 21:30 No.932
Re: 繰り返しができません
すみません
他の質問に頂いた返信により、コードを少し変更しました。
現在のコードは以下のようになっています。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
foreach($data as $row){
echo pq($row)->find('.dat')->text().'<br>';
echo pq($row)->find('.title')->text().'<br>';

$string = pq($row)->find('.image')->find('img').'<br>';
$string = utf8_encode($string);
$new_str = str_replace('%E2%80%BE', '~', $string);
echo $new_str;
}
echo '</div>';


?>
</body>
</html>
上田日花里 2021/01/11(Mon) 21:36 No.933
Re: 繰り返しができません
こんにちは,タイトルと画像の連続表示に関しては,
一度以下のように修正して試してみてください.
--------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
$title = $data->find('.title');
$image = $data->find('.image');
$combine = array_combine( $title, $image );
echo '<div>';
foreach ( $combine as $t => $i ){
echo pq($t) . ':' . pq($i) . '<br>';
}
echo '</div>';
?>
</body>
</html>
TA河島 2021/01/11(Mon) 22:12 No.939
Re: 繰り返しができません
すみません
修正したのですが、エラーになってしまいます。
上田日花里 2021/01/11(Mon) 22:34 No.943
Re: 繰り返しができません
「41行目のforreach()に無効な引数が指定されている」と書かれています。

修正したコードは以下の通りです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.topModuleBox'];
$title = $data->find('.title');
$image = $data->find('.image');
$combine = array_combine( $title, $image );
echo '<div>';
foreach ( $combine as $t => $i ){
echo pq($t) . ':' . pq($i) . '<br>';
}
echo '</div>';


?>
</body>
</html>
上田日花里 2021/01/11(Mon) 22:45 No.944
Re: 繰り返しができません
これで交互に表示されることを確認したので,
参考にしてみてください.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CDセール&キャンペーン情報</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>CDセール&キャンペーン情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tower.jp/article/campaign";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.inMdl-atclHeadlineDefCell'];
foreach($data as $row){
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.image')->find('img').'<br>';

}
echo '</div>';


?>
</body>
</html>
TA河島 2021/01/11(Mon) 23:46 No.946
うまく表示できません

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>気象情報収集システム</title>
<style>
div{
float: left;
background: #ffffff;
width: 800px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body{
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>気象情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://www.jma.go.jp/jp/warn/332_table.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo '<h2>気象庁の警報・注意報情報</h2><br><br>';
echo $doc["#WarnTableTable"].'<br><br>';
echo '</div>';

echo '<div class="image/000_telop_today">';
$img = $doc['.bnrIndexDemand']->find('png');
$img = fullpath($png, $url);
echo $png;
echo '</div>';
?>
</body>
</html>

エラーがたくさん出てきてどうすればよいのか分かりません
表示したいのは、兵庫県の警報・注意報と全国の天気です。
よろしくお願いします。

今里典子 2021/01/10(Sun) 15:18 No.884 [返信]
Re: うまく表示できません
まず,全国の天気のページのリンクを教えてもらってもいいですか?
TA河島 2021/01/10(Sun) 20:40 No.889
Re: うまく表示できません
http://www.jma.go.jp/jp/yoho/
このページの天気の図を表示したいです。
よろしくお願いします
今里典子 2021/01/11(Mon) 14:16 No.905
Re: うまく表示できません
こんにちは,
TAの河島です.
でしたら,一度下記の部分を
-----
echo '<div class="image/000_telop_today">';
$img = $doc['.bnrIndexDemand']->find('png');
$img = fullpath($png, $url);
echo $png;
-----
下記のように変更してみてください.
-----
$url2 = "http://www.jma.go.jp/jp/yoho/";
$doc2 = phpQuery::newDocumentFileHTML($url2);
$img = $doc2['#id']->find('img');
$img = fullpath($img, $url);
echo $img;
TA河島 2021/01/11(Mon) 15:27 No.909
Re: うまく表示できません
変更しましたがうまくいきませんでした。
警報のほうは出てきますが、天気のほうが真っ白です。
何が原因なのかさっぱりわかりません。
よろしくお願いします。
今里典子 2021/01/11(Mon) 21:42 No.935
Re: うまく表示できません
では,さっき提案した部分を下のように変更してもらってもいいですか?
$url2 = "http://www.jma.go.jp/jp/yoho/";
$doc2 = phpQuery::newDocumentFileHTML($url2);
$img = $doc2['#info']->find('img');
$img = fullpath($img, $url);
echo $img;
TA河島 2021/01/11(Mon) 22:01 No.938
Re: うまく表示できません
TAの長谷川です.
下記に変更お願いします.
fullpath関数(先生らが作成した自作関数)はURL1つに対して,1つしか変換できません.
今里さんが,取得しようとしているimgタグは複数あるので,foreachで回して取得するようにすると表示することが可能です.
確認お願いします.

$url2 = "http://www.jma.go.jp/jp/yoho/";
$doc2 = phpQuery::newDocumentFileHTML($url2);
$img = $doc2['#info']->find('img');
foreach($img as $val){
echo pq(fullpath($val,$url2)).'<br>';
}
TA-長谷川 2021/01/11(Mon) 22:17 No.940
Re: うまく表示できません
たくさんのエラーは出なくなりましたが、やはり表示されません。
今里典子 2021/01/11(Mon) 22:18 No.941
Re: うまく表示できません
河島くんの方法ではなく、自分の方を試してみて下さい。
自分の環境では、天気予報画像の表示をを確認しています。
TAの長谷川です 2021/01/11(Mon) 22:29 No.942
順位の表示

順位を表示させたいのですが、表示されません。
どのようにすればいいのでしょうか?


<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://applion.jp/iphone/rank/jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$date = $doc['.rowprof'];
foreach($date as $row){
echo pq($row)->find('.icon_rank iphone_color')->text();
echo pq($row)->find('.blog')->text();
echo pq($row)->find('.round_img')->find('img');
}
echo '</div>';

echo '<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo '</div>';
?>

重藤瞭介 2021/01/11(Mon) 18:10 No.924 [返信]
Re: 順位の表示
以下のコードでランキング化はできます.

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
/* 手順1 */
$counter = 0;//カウンター


/* 手順1 */
$counter = 0;//カウンター
$url = "https://applion.jp/iphone/rank/jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';

echo '<div>';
$date = $doc['.rowprof'];
foreach($date as $row){
$counter++;//カウントを増加
echo $counter.'位<br>';
echo pq($row)->find('.neme')->text().'<br>';
echo pq($row)->find('.round_img')->find('img').'<br>';
echo pq($row)->find('.headline')->text().'<br>';
}
?>
TA-長谷川 2021/01/11(Mon) 21:41 No.934
表示方法が分かりません

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>海外移籍情報</title>
<h1>海外サッカー移籍情報</h1>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}


</style>
</head>
<body>
<?php
echo '<div class="first">';
error_reporting(0);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.thesun.co.uk/topic/transfer-news/";
$uri = "https://www.thesun.co.uk/sport/football/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".teaser__copy-container"];
echo 'The SUNの移籍情報';
echo "<div>";
echo fullpath($news, $uri);
echo "</div>";
echo '</div>';


echo '<div class="second">';
error_reporting(0);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.skysports.com/football/transfer-news";
$uri = "https://www.skysports.com/transfer/news/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".title text-h3"];
echo 'Sky Sportsの移籍情報';
echo "<div>";
echo fullpath($news, $uri);
echo "</div>";
echo '</div>';
?>
</body>

</html>



としているのですが<div class="second">としている方が全く表示できません。どうすれば良いでしょうか?
後、<div class="first">の画像の表示方法を別のファイルでいくらか試したのですが全て上手くいかず、どうすれば良いか分からないので、そちらもよろしくお願いします。

佃修多 2021/01/10(Sun) 13:20 No.881 [返信]
Re: 表示方法が分かりません
TAの安田です.
まずは,<div class="first">の画像の表示方法からお答えしますね.

TheSunのページでは,画像は「teaser__copy-container」クラスの中の,img要素の中に入っています.
(添付画像を見てください.)

TA 安田 2021/01/10(Sun) 20:54 No.890
Re: 表示方法が分かりません
しかし,このimg要素をスクレイピングしてみると,添付画像のようにdiv要素に置き換わり,「data-src」属性のところに画像のURLが入ってしまっています.
サイトによって,スクレイピングをすると,要素の構造が変わってしまうようです.
また,画像のURLは絶対パスになっているため,fullpath関数は必要ありません.

そのため,以下の手順で画像を表示します.

1. data-src属性のURLを抜き出す.
2.img要素のsrcに指定して表示する.


以下に表示例を載せておきます.(画像の大きさは,CSSで調整してください.)
画像の説明文(「teaser__copy-container」クラス)も同時に表示しなければならないので,書き方を変えています.
親の要素である「teaser-item」クラスを取得し,それをforeach文でループさせています.


echo '<div class="first">';
$url = "https://www.thesun.co.uk/topic/transfer-news/";
$doc = phpQuery::newDocumentFileHTML($url);

/* 「teaser-item」クラスで抜き出す,この中に「teaser__image-container」クラスや「teaser__copy-container」クラスが入っている */
$items = $doc['.teaser-item'];

echo 'The SUNの移籍情報';
echo '<div>';

/* foreach文でループ */
foreach ($items as $item) {

/* 「data-src」属性の中の画像URLを取得する */
$img_url = pq($item)->find('.delayed-image-load-landscape')->attr('data-src');

/* 画像を表示 */
echo '<img src="'.$img_url.'">';

/* 画像の説明文(「teaser__copy-container」クラス)を表示 */
echo pq($item)->find('.teaser__copy-container');

}
echo '</div>';
echo '</div>';

TA 安田 2021/01/10(Sun) 21:11 No.892
Re: 表示方法が分かりません
次に,<div class="second">の方ですが,

$news = $doc[".title text-h3"];

の書き方が間違いです.恐らくスクレイピング先の

<h2 class="title text-h3">Morrison has ADO Den Haag contract terminated</h2>

を取得しようとしていると見受けられます.
これは,クラスが2つあるという意味で,「title」クラスと「text-h3」クラスの2つがスペースで区切られている状態です.
これをphpqueryで取得するには,カンマ区切りで指定します.
以下のような感じですね.

$news = $doc[".title, .text-h3"];
TA 安田 2021/01/10(Sun) 21:21 No.893
Re: 表示方法が分かりません
最後にコメントですが,<div class="second">の方は,画像を取得できていません.
スクレイピング先のサイトから画像のある要素を探す必要があります.

Google Chromeを使っていれば,F12キーか右クリックでブラウザのデベロッパーモード(検証ツール)を起動することができ,要素を容易に探すことができます.




たとえば,添付画像にあるように,グエンドゥージ選手の画像は,

<div class="box media -bp30-vertical">

の中の

<a href="/transfer/news/12691/12179194/arsenal-transfer-news-and-rumours-january-transfer-window-2021" class="-a-block -auto16/9">

の中に,

<img src="https://e0.365dm.com/21/01/384x216/skysports-guendouzi-hertha-berlin_5233059.jpg?20210110091430" class="image" alt="Is Matteo Guendouzi on his way back to Arsenal? - AP photo">

という形で入っています.
また,その1つ下のウパメカノ選手の画像も同じように入っています.

と,いうことは,

1.「box」「media」「-bp30-vertical」クラスの条件で指定して,div要素を複数取得する
2.その複数のdiv要素をforeach文で1つ1つループさせる
3.「-a-block」「-auto16/9」クラスの条件で指定して,a要素を取得する
4.そのa要素の中にあるimg要素を取得する

というような形で,画像を取得する算段が立てられます.

TA 安田 2021/01/10(Sun) 21:48 No.895
Re: 表示方法が分かりません
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>海外移籍情報</title>
<h1>海外サッカー移籍情報</h1>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 40px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}


</style>
</head>
<body>
<?php
echo '<div class="first">';
error_reporting(0);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.thesun.co.uk/topic/transfer-news/";
$doc = phpQuery::newDocumentFileHTML($url);
$items = $doc['.teaser-item'];
echo 'The SUNの移籍情報';
echo "<div>";
foreach ($items as $item) {
$img_url = pq($item)->find('.delayed-image-load-landscape')->attr('data-src');
echo '<img src="'.$img_url.'">';
echo pq($item)->find('.teaser__copy-container');
}
echo "</div>";
echo '</div>';


echo '<div class="second">';
error_reporting(0);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.skysports.com/football/transfer-news";

$doc = phpQuery::newDocumentFileHTML($url);

$items = $doc[".box, .media, .-bp30-vertical"];
echo 'Sky Sportsの移籍情報';

echo "<div>";
foreach ($items as $item) {
$img_url = pq($item)->find('.-a-block, .-auto16/9')->find('img');
echo '<img src="'.$img_url.'">';
echo pq($item)->find('.title, .text-h3');
}
echo"</div>";
echo '</div>';
?>
</body>

</html>


と変更したのですが、二個目のSky Spotrsの方が添付画像のように一つだけ読み込みそれ以外が読み込んでいませんし、画像を表示するところが記事のタイトルと合わないです。また記事のタイトルも繰り返してしまいます。

佃修多 2021/01/11(Mon) 02:33 No.900
Re: 表示方法が分かりません
返信ありがとうございます.
以下のコードで確認したところ,添付画像のようになりました.
どうやら,このサイトも単純にスクレイピングさせてくれないようです.
1番目の画像に対しては,img要素のsrc属性で画像URLが指定されているのに対し,
2番目以降は,data-src属性に画像URLが指定されています.

<?php
/* 注意メッセージを無視する */
error_reporting(E_ALL & ~E_NOTICE);

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div class="second">';
$url = "https://www.skysports.com/football/transfer-news";
$doc = phpQuery::newDocumentFileHTML($url);
$news_list = $doc[".news-list "];
$items = $news_list[".news-item"];
echo 'Sky Sportsの移籍情報';
echo "<div>";
foreach ($items as $item) {
echo pq($item);
}
echo"</div>";
echo '</div>';
?>

TA 安田 2021/01/11(Mon) 14:53 No.906
Re: 表示方法が分かりません
この場合,以下のように場合分けをして対応することができます.
ついでに,リンク先をa要素に指定してみたので,参考にしてください.


echo '<div class="second">';
$url = "https://www.skysports.com/football/transfer-news";

/* リンク先に引っ付ける用(相対パスなので) */
$uri = "https://www.skysports.com";

$doc = phpQuery::newDocumentFileHTML($url);
$news_list = $doc[".news-list "];
$items = $news_list[".news-item"];
echo 'Sky Sportsの移籍情報';
echo "<div>";

/* 順番確認用の変数 */
$i=0;

foreach ($items as $item) {

/* 最初の画像の処理 */
if ($i==0) {

$img_url = pq($item)->find('.-a-block, .-auto16/9')->find('img')->attr('src');

/* 2番目以降の画像の処理 */
} else {

$img_url = pq($item)->find('.-a-block, .-auto16/9')->find('img')->attr('data-src');

}

/* リンク先のURLを取得 */
$href_url = pq($item)->find('.-a-block, .-auto16/9')->attr('href');

/* リンク先のURLをa要素のhref属性に指定 */
echo '<a href="'.$uri.$href_url.'">';

/* 画像の表示 */
echo '<img src="'.$img_url.'">';

/* 文字の表示 */
echo pq($item)->find('.title, .text-h3');

/* a要素の閉じタグ */
echo '</a>';

/* 変数をインクリメント */
$i+=1;

}
echo"</div>";
echo '</div>';
TA 安田 2021/01/11(Mon) 15:18 No.908
Re: 表示方法が分かりません
何度もすみません。
ここがunknownとなって表示されていないのですが元のThe Sunの方を見ても何を読み取ろうとしているのかわかりません。出来れば表示したくないのですがどうしたらよいでしょうか。

佃修多 2021/01/11(Mon) 19:10 No.928
Re: 表示方法が分かりません
> unknownとなって表示されていない
> 出来れば表示したくない

とのことですが,

$img_url = pq($item)->find('.delayed-image-load-landscape')->attr('data-src');

でURLが取得できなかった場合に,以降の処理を飛ばすことで対応できます.
if文で「$img_url」を対象とすると,変数に値が入っているかどうか判別できます.

以下のように修正してください.


/***** 変更前 *****/
foreach ($items as $item) {
$img_url = pq($item)->find('.delayed-image-load-landscape')->attr('data-src');
echo '<img src="'.$img_url.'">';
echo pq($item)->find('.teaser__copy-container');
}


/***** 修正後 *****/
foreach ($items as $item) {
$img_url = pq($item)->find('.delayed-image-load-landscape')->attr('data-src');
/* 取得できている場合は,if文の中を実行する */
if ($img_url) {
echo '<img src="'.$img_url.'">';
echo pq($item)->find('.teaser__copy-container');
}
}
TA 安田 2021/01/11(Mon) 19:56 No.929
Re: 表示方法が分かりません
解決しました。
本当に何度もありがとうございました。
佃修多 2021/01/11(Mon) 20:29 No.930
無題

<html lang=ja>
<head>
 <meta charset="UTF-8">
 <title>Web情報収集システム</title>
</head>
<body>
 <h1>新型コロナ最新情報</h1>
 <?php
  require_once("phpQuery-onefile.php");
  require_once("pathChanger.php");
  echo '<div>';
  $url = "https://www.jiji.com/jc/list?g=cov";
  $doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
  $data = $doc['.MainInner'];
  foreach($data as $row){
  echo pq($row)->find('.ArticleListMain')->text().'<br>';
}
  echo '</div>';
 ?>
</body>
</html>
これで表示された文章を改行するにはどうすればよいですか?

土生紘也 2021/01/10(Sun) 21:49 No.896 [返信]
Re: 無題
TAの本信です.
1ずつの「li」を取得して,「p」テキストのデータを取り出して表示すれば,改行ができると思います.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)

<html lang=ja>
<head>
 <meta charset="UTF-8">
 <title>Web情報収集システム</title>
</head>
<body>
 <h1>新型コロナ最新情報</h1>
 <?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.jiji.com/jc/list?g=cov";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
/* 修正1 */
$data = $doc['.LinkList>li'];
foreach($data as $row){
/* 修正2 */
echo pq($row)->find('p')->text().'<br>';
}
echo '</div>';
?>
</body>
</html>
TA本信 2021/01/11(Mon) 16:09 No.912
Re: 無題
こんにちは,多分,土生さんは学籍番号が218だと思うのですが,
http://webdesign.center.wakayama-u.ac.jp:60080/~s256218/exsi2020/report.php
にページがない状態になっています.
最終課題提出のために,ページを見ながら修正箇所を指摘しようと思うので,
report.phpを作成してください.
TA河島 2021/01/11(Mon) 16:11 No.913
Re: 無題
すみません、report.phpを提出した時点で確定になると思っていたので、名前を変えて作っていました。今あげなおしました。
土生紘也 2021/01/11(Mon) 18:58 No.927
表の表示方法がわかりません。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body{
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>Web情報収集システム<h1/>
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://soccer.yahoo.co.jp/ws/standings/52";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc[".sn-table sn-table--ranking"];
echo '</div>';

echo '<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo '</div>';
?>
</body>
</html>


としているのですが表が表示されません。どうすればいいでしょうか。

松原央宜 2021/01/11(Mon) 17:12 No.921 [返信]
Re: 表の表示方法がわかりません
TAの本信です.
「sn-table sn-table--ranking」は「sn-table」,「sn-table--ranking」という2つクラスが含まれているので,一つに指定してください.

echo $doc[".sn-table sn-table--ranking"];

の部分を下記のように変更してください.

echo $doc[".sn-table--ranking"];
TA本信 2021/01/11(Mon) 18:53 No.926
相対パスから絶対パスへの変換

相対パスから絶対パスへ変換する方法がわかりません。
何度か試行しサイトリンクをクリックしてもNot Foundと表示されます。
また、コマンドプロンプトでは、「phpQuery-onefile.php on line 1235」と表示されているので、おそらく自身のプログラムがどこかで間違えていると思うのですが、どこを改善すればよいでしょうか?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>appstore ゲームセールスランキング情報収集システム</title>
<style>
</style>
</head>
<body>
<h1>appstore ゲームセールスランキング情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://topappranking300.appios.net/top-grossing-iphone/6014.html";
$doc = phpQuery::newDocumentFileHTML($url);
$rank = $doc['.span2'];
echo '取得サイト:'.$doc['title']->text().'<br>';
echo fullpath($rank["a"],$url);
echo '</div>';
?>
</body>
</html>

楠根弘稀 2021/01/11(Mon) 16:12 No.914 [返信]
Re:
TAの本信です.
リンク先のurlがしている「$url」のリンクと違うので,変える必要があります.
また,fullpath()は1対1でしか動作しないので,foreachで一つずつ実行してください.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>appstore ゲームセールスランキング情報収集システム</title>
<style>
</style>
</head>
<body>
<h1>appstore ゲームセールスランキング情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://topappranking300.appios.net/top-grossing-iphone/6014.html";
$url2 = "http://topappranking300.appios.net/";
$doc = phpQuery::newDocumentFileHTML($url);
$rank = $doc['.span2'];
echo '取得サイト:'.$doc['title']->text().'<br>';
/* 修正 */
$link = $rank->find('a');
foreach($link as $row){
echo pq(fullpath($row,$url2)).'<br>';
}

echo '</div>';
?>
</body>
</html>
TA本信 2021/01/11(Mon) 18:24 No.925
無題

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://music-book.jp/music/news/jrock";
$doc = phpQuery::newDocumentFileHTML($url);

$music = $doc['.mod-news-list'];
echo '<div>';
foreach($music as $row){
echo pq($row)->find('.title');
echo pq($row)->find('.image');

}
echo '</div>';
?>
</body>
</html>

文字とそれに対応する画像をセットで表示させたいのですが、ばらばらに表示されてしまいます。どうすればよいでしょうか。

吉野太雄 2021/01/10(Sun) 22:15 Home No.897 [返信]
Re: 無題
TAの本信です.
文字とそれに対応する画像をセットで表示させたいのであれば,「li」要素を一つずつ取り出して表示してください.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://music-book.jp/music/news/jrock";
$doc = phpQuery::newDocumentFileHTML($url);

/* 修正1 */
$music = $doc['.mod-news-list>li'];
echo '<div>';
foreach($music as $row){
echo pq($row)->find('.title');
echo pq($row)->find('.image');

}
echo '</div>';
?>
</body>
</html>
TA本信 2021/01/11(Mon) 16:23 No.915
Re: 無題
こんにちは,一度$music以降の部分を以下のように変更してみてください.
-----------------------------------------------
$music = $doc['.mod-news-list'];
$title = $music->find('.title');
$image = $music->find('.image');
echo '<div>';
foreach (array_map(NULL, $title, $image) as [ $t, $i ]) {
echo pq($t) . ':' . pq($i) . '<br>';

}
echo '</div>';
TA河島 2021/01/11(Mon) 16:33 No.917
Re: 無題
解決しました。ありがとうございました。
吉野太雄 2021/01/11(Mon) 17:13 Home No.922
tumblrからの画像取得

tumblrに投稿されている画像がうまく取得できませんでした。
取得したい画像はpng形式です。

--コード--

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://tsueten.tumblr.com/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.the-posts ready>posts-holder posts-grid'];
$img = $doc['.text-post-wrap']->find('img');
$img = fullpath($img, $url);
echo $img;
?>

s256041 2021/01/10(Sun) 12:19 No.877 [返信]
Re: tumblrからの画像取得
すみません,こちらで確認したところ,画像の取得・表示自体はうまくいっているように思えます.

具体的に,どういう問題が発生しているのかを教えてください.

TA-長谷川・本信 2021/01/10(Sun) 13:16 No.880
Re: tumblrからの画像取得
Chromeを再起動したところ表示することができました。

画像の上のエラーコードを削除し、
枠内にそれぞれの画像が収まるようにしたいです。
s256041 2021/01/10(Sun) 14:17 No.882
Re: tumblrからの画像取得
TAの本信です.

枠内にそれぞれの画像が収まるようにしたいであれば,imgの
width=300px;などに変えてみてください.
もし,反映しなければ,cssの importantを使ってみてください.
以下の記事を参考にしてください.
https://takuya-1st.hatenablog.jp/entry/2017/12/21/182700
TA本信 2021/01/11(Mon) 16:36 No.918
無題

「error_reporting(E_ALL & ~E_NOTICE);」を書いても「Notice: Undefined property: phpQueryObject::$tagName in /home/s256259/public_html/exsi2020/phpQuery-onefile.php on line 1235」といった注意メッセージが表示されてしまいます。使い方が間違っているのでしょうか?

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo "<div_G>";
echo " 巨人<br>";
$url_G = "https://baseball.yahoo.co.jp/npb/teams/1/top";
$doc_G = phpQuery::newDocumentFileHTML($url_G);
$data_G = $doc_G["#tm_new"]->find(".sn-list__item");
echo fullpath($data_G["a"],$url_G);
echo "</div_G>";

echo "<div_T>";
echo "阪神<br>";
$url_T = "https://baseball.yahoo.co.jp/npb/teams/5/top";
$doc_T = phpQuery::newDocumentFileHTML($url_T);
$data_T = $doc_T["#tm_new"]->find(".sn-list__item");
echo fullpath($data_T["a"],$url_T);
echo "</div_T>";

echo "<div_D>";
echo "中日<br>";
$url_D = "https://baseball.yahoo.co.jp/npb/teams/4/top";
$doc_D = phpQuery::newDocumentFileHTML($url_D);
$data_D = $doc_D["#tm_new"]->find(".sn-list__item");
echo fullpath($data_D["a"],$url_D);
echo "</div_D>";

echo "<div_B>";
echo "DeNA<br>";
$url_B = "https://baseball.yahoo.co.jp/npb/teams/3/top";
$doc_B = phpQuery::newDocumentFileHTML($url_B);
$data_B = $doc_B["#tm_new"]->find(".sn-list__item");
echo fullpath($data_B["a"],$url_B);
echo "</div_B>";

echo "<div_C>";
echo "広島<br>";
$url_C = "https://baseball.yahoo.co.jp/npb/teams/6/top";
$doc_C = phpQuery::newDocumentFileHTML($url_C);
$data_C = $doc_C["#tm_new"]->find(".sn-list__item");
echo fullpath($data_C["a"],$url_C);
echo "</div_C>";

echo "<div_Y>";
echo "ヤクルト<br>";
$url_Y = "https://baseball.yahoo.co.jp/npb/teams/2/top";
$doc_Y = phpQuery::newDocumentFileHTML($url_Y);
$data_Y = $doc_Y["#tm_new"]->find(".sn-list__item");
echo fullpath($data_Y["a"],$url_Y);
echo "</div_Y>";

error_reporting(E_ALL & ~E_NOTICE);
?>

溝口智規 2021/01/11(Mon) 13:25 No.904 [返信]
Re: 無題
TAの安田です。
記述箇所を1番下ではなく、
上の方にして下さい。
(require_once("phpQuery-onefile.php");の上とか)

理由は、phpファイルを一通り実行した後に、1番下で注意メッセージを無視しても意味がないからです。
TA 安田 2021/01/11(Mon) 16:25 No.916
画像の表示範囲

tumblrから画像を取得し表示することができたのですが、
それぞれの画像が枠から飛び出してしまいます。
CSSで高さと幅を設定しても反映されませんでした。
解決方法が知りたいです。

p.image img {
height: auto;
width: auto;
}

s256041 2021/01/11(Mon) 12:40 No.903 [返信]
Re: 画像の表示範囲
こんにちは,今のreport.phpの状態であれば,
.b-radius img {
width: XXpx;
height: XXpx;
}
で変更できると思います.
参考url:https://www.nishishi.com/css/resize-image-keep-aspect-ratio.html
TA河島 2021/01/11(Mon) 16:03 No.910
画像を表示させられません

コードは以下です

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Wed情報システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-aling: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #000000;
}
</style>
</head>
<body>
<h1>お菓子レシピ収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://delishkitchen.tv/categories/6";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.slide-wrapper'];
foreach($data as $row){
echo pq($row)->find('.recipe-title')->text().'<br>';
echo pq($row)->find('.rank-text')->text().'<br>';
echo pq($row)->find('item-card_img-wrap>item-card_img-wrap-inner')->find("img").'<br>';
}
echo '</div>';
?>
</body>
</html>

山口樹音 2021/01/09(Sat) 17:45 No.876 [返信]
Re: 画像を表示させられません
TAの長谷川と本信です.
スクレイピング先のURLをこちらで確認してみましたが,
おそらく制限がかかっており,画像が取れなくなっているみたいです.

代替案として以下の2つを提案します.
・別のサイトを使用する
・画像だけローカルで保存し,その保存した画像をサーバにアップロードして使用する.

ちなみに,下記の部分ですが,
echo pq($row)->find('item-card_img-wrap>item-card_img-wrap-inner')->find("img").'<br>';

echo pq($row)->find('.item-card_img-wrap>item-card_img-wrap-inner')->find("img").'<br>';
に変更してください.
抽出したいクラス名の前に付ける「.」が抜けていました.

引き続き頑張ってください!
TA-長谷川・本信 2021/01/10(Sun) 13:10 No.879
Re: 画像を表示させられません
ありがとうございます
別のサイトを使用してやってみます
山口樹音 2021/01/11(Mon) 15:12 No.907
画像サイズ変更について

二つのサイトを重ならずに左右に分割して表示させる方法がわからないです。また、サイトの画像の大きさを変えたいのですが、数値を変更してもほとんど変化しません。どうすればよいのでしょうか。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #000000;
width: 600px;
padding: 10px;
text-align: left;
border: 3px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #008000;
}
body{
background: #ff6600;
}
.news_image{
display:block;
width:100px;
height:120px;
}
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://funky802.com/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$news = $doc['.inner-box'];
echo fullpath($news["li"],$url);
echo '</div>';

?>
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.allnightnippon.com/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$news = $doc['.index_news'];
echo fullpath($news["li"],$url);
echo '</div>';

?>
</body>
</html>

石川美波 2021/01/10(Sun) 17:11 Home No.885 [返信]
Re: 画像サイズ変更について
こんばんは,TAの河島です.
左右に分割というのが,私のイメージとあっているかはわかりませんが,
<style>
div {
float: left;
background: #000000;
width: 600px; ←を200とかにすると小さくなります,
もし,ウインドウサイズに合わせて変化させたい場合は,
https://techacademy.jp/magazine/39348
こちらが参考になるかと思います.



画像の大きさに関しては,
p.news_image img {
width:150px;

}
のように変えてみてください.
下のサイトが参考になるかと思います.
https://www.nishishi.com/css/resize-image-keep-aspect-ratio.html
TA河島 2021/01/10(Sun) 21:03 No.891
文字化けしてしまいます。

プログラムを作成したのですが、作成したサイトを閲覧すると文字化けを起こして大量の文字が出てきます。これはどういうことでしょうか?
以下は作成したプログラムです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Appstore セールスランキング情報収集システム</title>
</head>
<body>
<h1>Appstore セールスランキング情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://appmedia.jp/app_review/2607505";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.top_sales_ul>li'];
echo '</div>';
?>
</body>
</html>

楠根弘稀 2021/01/10(Sun) 19:29 No.886 [返信]
Re: 文字化けしてしまいます。
文字コードが違うので,以下のコードを参考にして書き換えてください.
また,大量文字ついては隠れているだけです.(画像を参照してください.)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Appstore セールスランキング情報収集システム</title>
</head>
<body>
<h1>Appstore セールスランキング情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://appmedia.jp/app_review/2607505";

/* 修正1 */
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');

echo '取得サイト:'.$doc['title']->text().'<br>';

/* 修正2 */
echo $doc['.top_sales_ul>li']->text().'<br>';

echo '</div>';
?>
</body>
</html>

TA本信 2021/01/10(Sun) 20:15 No.887
テキストデータを表示できません

<! DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Web情報収集システム</title>
</head>
<body>
 <h1>新型コロナ最新情報</h1>
 <?php
  require_once("phpQuery-onefile.php");
  require_once("pathChanger.php");
  echo '<div>';
  $url = "https://www.jiji.com/jc/list?g=cov/";
  $doc = phpQuery::newDocumentFileHTML($url);
  echo $doc['.LinkList>li'];
  echo '</div>';
 ?>
</body>
</html>
このように書いたのですが、最新情報がでません。
どうすればよいでしょうか。

土生紘也 2021/01/10(Sun) 12:19 No.878 [返信]
無題
TA長谷川・本信です.

下記のコードに変更してみてください.
文字化けしてしまうため,文字コードにSJISを指定しています.
(他の文字コードだと文字化けする)

<! DOCTYPE html>
<html lang=ja>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>新型コロナ最新情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://www.jiji.com/jc/list?g=cov";
$doc = phpQuery::newDocumentFileHTML($url, $charset = 'SJIS');
$data = $doc['.MainInner'];
foreach($data as $row){
echo pq($row)->find('.ArticleListMain')->text().'<br>';
}
echo '</div>';
?>
</body>
</html>
TA-長谷川・本信 2021/01/10(Sun) 14:23 No.883
画像の表示方法がわかりません

コードは以下の通りです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テレビ番組ランキング</title>
<style>
div {
float: left;
background: #ffffff;
width: 800px;
padding: 20px;
text-align: left;
border: 5px solid #cccccc;
margin: 15px 5px 10px 5px;
color: #ff6600;
}

body {
background: #f0f8ff;
background-image: url("./download.jpg");
}
</style>

</head>
<body>
<h1>テレビ番組ランキング</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://tver.jp/ranking/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.detail_link'];
foreach($data as $row){
echo pq($row)->find('.rank')->text().'<br>';
echo pq($row)->find('.progtitle')->text().'<br>';
echo pq($row)->find('.picinner')->find('img').'<br>';
}
echo '</div>';
?>
</body>
</html>

宮井隆博 2021/01/07(Thu) 23:55 No.865 [返信]
Re: 画像の表示方法がわかり...
TAの安田です.

>> 画像の表示方法がわかりません

とのことですが,順を追って説明します.
今回スクレイピングの対象としたサイト(https://tver.jp/ranking/)の画像表示方法が,添付画像にある通り,div要素のstyle属性としてbackground-imageのURLで指定されていますね.

この場合,面倒くさいですが,以下の手順で取り出し,表示します.
1.style属性の中身「background-image:url(https://〜.jpg);」を取得する.
2.str_replace関数で要らないもの「background-image:url(」「);」を除去する.
3.画像のURLだけになったので,img要素のsrc属性に指定して表示させる.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)


<?php

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div>';

$url = "https://tver.jp/ranking/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.detail_link'];

foreach($data as $row){

echo pq($row)->find('.rank')->text().'<br>';
echo pq($row)->find('.progtitle')->text().'<br>';

// echo pq($row)->find('.picinner').'<br>';

/* 手順1 */
$background_image_url = pq($row)->find('.picinner')->attr('style');

/* 手順2 */
$replace_url = str_replace('background-image:url(', '', $background_image_url);
$replace_url = str_replace(');', '', $replace_url);

/* 手順3 */
echo '<img src="'.$replace_url.'">'.'<br>';

}

echo '</div>';

?>

TA 安田 2021/01/08(Fri) 02:20 No.869
Re: 画像の表示方法がわかり…
ありがとうございます。
無事画像を表示することができました。
宮井隆博 2021/01/08(Fri) 17:43 No.875
無題

画像とテキストをそれぞれ紐づけしたいのですが、羅列されてしまいます。ランキングのように表示するためにはどのようにすればよいのでしょうか。
コードは以下の通りです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 800px;
padding: 20px;
text-align: center;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body{
background: #99ffcc;
}
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://kakaku.com/pc/mp3-player/ranking_0130/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['#main'];
foreach($data as $row){
echo pq($row)->find('.rkgBoxName')->text().'<br>';
echo pq($row)->find('.rkgItemImg')->find('img').'<br>';
}
echo '</div>';

?>
</body>
</html>

近藤銀音 2021/01/08(Fri) 09:56 Home No.870 [返信]
Re: 無題
TAの本信です.

以下の手順で.ランキング表示ができます.
1.順位を表示するために,$countという変数を作成します.
2.画像とテキスト(商品名)が含まれている「rkgBox」を先に取得します.
3.$countの値を1ずつ増やし,一個ずつ画像やテキストのデータを取り出して表示する.

また,ランキング表示についてはスライド85ページにやり方が載っているので参考してください.

PHPのコードも以下に載せておきますね.
(元々書いてあって,不要になった箇所はコメントアウトしています.)


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 800px;
padding: 20px;
text-align: center;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body{
background: #99ffcc;
}
</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php

/* 手順1 */
$counter = 0;//カウンター

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://kakaku.com/pc/mp3-player/ranking_0130/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';

/* 手順2 */
$data = $doc['#main']->find('.rkgBox');

foreach($data as $row){

/* 手順3 */
$counter++;//カウントを増加
echo $counter.'位<br>';
echo pq($row)->find('.rkgBoxName')->text().'<br>';
echo pq($row)->find('.rkgItemImg')->find('img').'<br>';

}
echo '</div>';

?>
</body>
</html>

TA本信 2021/01/08(Fri) 14:04 No.874
同様のものが反復します

同じものが二回反復してしまいます。後者だけを表示するためにはどうすればよいでしょうか?
コードは以下の通りです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報システム</title>
<style>
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<hl>美味しい野菜の見つけ方</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url_1 = "https://www.yasainavi.com/calendar/";
$doc_1 = phpQuery::newDocumentFileHTML($url_1);
$url_2 = "https://yaosho101.com/select/";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);
echo '取得サイト:'.$doc_1['title']->text().'<br>';
echo $topic_1 = $doc_1['.table-responsive'];
echo '取得サイト:'.$doc_2['title']->text();
echo $topic_2 = $doc_2['.contents'];
echo '</div>';
echo '<div>';
echo fullpath($topic_1,$url_1);
echo fullpath($topic_2,$url_2);
echo '</div>';
echo error_reporting(E_ALL & ~E_NOTICE);
?>
<body/>
</html>

山田悠衣 2021/01/08(Fri) 10:35 No.871 [返信]
Re: 同様のものが反復します
TAの長谷川です.

-------------------------------
echo '取得サイト:'.$doc_1['title']->text().'<br>';
echo $topic_1 = $doc_1['.table-responsive'];
echo '取得サイト:'.$doc_2['title']->text();
echo $topic_2 = $doc_2['.contents'];
echo '</div>';
echo '<div>';
echo fullpath($topic_1,$url_1);
echo fullpath($topic_2,$url_2);
echo '</div>';
echo error_reporting(E_ALL & ~E_NOTICE);
-------------------------------
上記の部分ですが,
echo $topic_1 = $doc_1['.table-responsive'];
echo $topic_2 = $doc_2['.contents'];

echo fullpath($topic_1,$url_1);
echo fullpath($topic_2,$url_2);
は同じ内容が出力されることが予想されます.
前者の
echo $topic_1 = $doc_1['.table-responsive'];
echo $topic_2 = $doc_2['.contents'];

$topic_1 = $doc_1['.table-responsive'];
$topic_2 = $doc_2['.contents'];
に変換してみてください.
TA-長谷川 2021/01/08(Fri) 14:00 No.873
無題

<div>PHP Notice: Undefined property: phpQueryObject::$tagName in /home/s256247/public_html/exsi2020/phpQuery-onefile.php on line 1235
というエラーがいくつか出ているのですが、これはWebスクレイピングができないということでしょうか。

柾木錬 2021/01/07(Thu) 19:17 No.860 [返信]
Re: 無題
TAの安田です.
該当のPHPコードを添付していただけますか?
TA 安田 2021/01/07(Thu) 21:35 No.862
Re: 無題
echo '<div>';
$url = "https://www.shonenjump.com/j/comics/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc["jumpcomicsList"];
echo fullpath($news["li"],$url);
echo '</div>';
おそらくこの部分だと思います。
柾木錬 2021/01/07(Thu) 22:42 No.864
Re: 無題
ありがとうございます.
スクレイピングの対象と思われる箇所は,

<section class="jump comicsList">

の内部ですよね?
この場合,クラス名が2つあって,スペースで区切られているだけです.
ゆえに,要素の指定は「jump」または「comicsList」のどちらかで行います.
(両方を指定するやり方もありますが,気になるのであれば調べてみてください.)
話を戻しますが,「comicsList」で指定した場合,下部に存在する

<section class="j_plus comicsList">
<section class="saikyo comicsList">

の2つも対象となってしまいます.「jump」で指定すれば,

<section class="jump comicsList">

の内部のみが取得できるはずです.そうすると,

$news = $doc["jumpcomicsList"];

は,

$news = $doc[".jump"];

に書き換える必要があります.
TA 安田 2021/01/08(Fri) 00:37 No.866
Re: 無題
また,fullpath関数で表示を行う部分ですが,このままだと

Notice: Undefined property: phpQueryObject::$tagName...

の注意メッセージが表示されると思います.これは,

$news["li"]

で取得している要素が単一ではなく,複数のものであるからです.これは,fullpath関数の仕様で,本当であれば,fullpath関数の引数2つは,1対1の関係でなければなりません.
溝口さんの返信にも書いてあるので,見てみてください.
注意メッセージの云々もそっちに書いています.


以上を踏まえると,PHPのコードは以下になるかと思います.画像の大きさや,li要素の黒丸などについては,CSSで適宜調整を行って下さい.


<?php

error_reporting(E_ALL & ~E_NOTICE); /* 注意メッセージを無視する */

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div>';
$url = "https://www.shonenjump.com/j/comics/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".jump"];
echo fullpath($news["li"], $url);
echo '</div>';

?>
TA 安田 2021/01/08(Fri) 01:10 No.867
Re: 無題
できました。ありがとうございます。
柾木錬 2021/01/08(Fri) 02:05 No.868
Notice: Undefined property:

Notice: Undefined property: phpQueryObject::$tagName in /home/s256259/public_html/exsi2020/phpQuery-onefile.php on line 1235
というのが2つ続けて表示されます。
おそらく
echo fullpath($news["li"],$url);
の部分が原因だと思うのですが、何が間違っているのでしょうか。

溝口智規 2021/01/07(Thu) 20:24 No.861 [返信]
Re: Notice: Undefined prop...
TAの安田です.
>> echo fullpath($news["li"],$url);
>> の部分が原因だと思う

その通りです.
fullpath関数の仕様としては,1番目の引数に指定された1要素の相対パスを,2番目のもので絶対パスに書き換える関数です.
「1要素」というのがポイントです.(詳細は,pathChanger.phpのfullpath関数のコードを見ると確認することができますが...)
そのため,複数のまとまった要素を,fullpath関数の1番目の引数に入れていると,要素名をうまく取得することができず,「Notice: Undefined property:」の注意メッセージが表示されることとなります.
一応,fullpath関数は複数のまとまった要素に対しても,見かけ上適応できてはいますが,注意メッセージが表示されるのは上記の理由の為です.

複数の画像に対してfullpath関数を適用する場合は,講義資料の81Pなどが参考になると思います.

しかし,面倒くさい場合は,注意メッセージを無視する方法もあります.

phpの箇所に「error_reporting(E_ALL & ~E_NOTICE);」を書くと,注意メッセージだけ表示しないようにできます.(エラー文はちゃんと表示されます.)

(該当箇所のPHPコードを添付していただければ,アドバイス等できますが,現状ではこんな感じの返信となります.)
TA 安田 2021/01/07(Thu) 21:59 No.863
無題

web情報システムのプログラムを入力して、プロンプトまではちゃんと実行できたのですが、自分のサイトを開くことが出来ません。ちゃんと自分の学籍番号に変更して開こうとしましたが、「このサイトにアクセスするにはサインインしてください」という表示が出てパスワード等入力したのですが実行できません。何か解決方法はありますか。

石川美波 2021/01/03(Sun) 13:26 Home No.858 [返信]
Re: 無題
TAの安田です.

> 自分のサイトを開くことが出来ません。

とのことですが,

・ユーザ名:webd
・パスワード:Sakaeda2

でアクセスすることができます.
詳しくは授業スライド34Pを確認してください.
TA 安田 2021/01/03(Sun) 14:21 No.859
無題

初めてのHTMLのページ!とブラウザに表示するところで何度行っても見つかりませんと出るのですがどうしたらいいですか。

齊藤大翼 2020/12/23(Wed) 16:08 No.854 [返信]
Re: 無題
TAの安田です.
こちらから確認したところ,public_html内のディレクトリ構造が以下のようになっていました.

- /exsi2020
|
- /exsi
|
- hello.html


「exsi」というフォルダは不要です.「exsi」は削除し,次のように配置し直してください.

- /exsi2020
|
- hello.html

これにより「http://webdesign.center.wakayama-u.ac.jp:60080/~s256108/exsi2020/hello.html」のURLで見られるようになるはずです!
TA 安田 2020/12/23(Wed) 23:03 No.855
未定義のプロパティについて

Notice: Undefined property: phpQueryObject::$tagName in /home/s256204/public_html/exsi2020/phpQuery-onefile.php on line 1235
というエラーを同時に6つも吐くのですが、未定義のプロパティというものが何なのか分かりません。どこを間違えているのでしょうか。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>report</title>
</head>
<body>
<h1>目指せポケモンマスター</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo "<div>";
$url = "https://gamewith.jp/pokemon-sword-shield/article/show/175815";
$doc = phpQuery::newDocumentFileHTML($url);
echo '<h2>使用率ランキング</h2><br><br>';
echo '一位';
$img = $doc['.article-ogimage']->find('img');
$img = fullpath($img,$url);
echo $img;
$url2 = "https://gamewith.jp/pokemon-sword-shield/article/show/207489";
$doc2 = phpQuery::newDocumentFileHTML($url2);
echo '二位';
$img2 = $doc2['.article-ogimage']->find('img');
$img2 = fullpath($img,$url);
echo $img2;
$url3 = "https://gamewith.jp/pokemon-sword-shield/article/show/207504";
$doc3 = phpQuery::newDocumentFileHTML($url3);
echo '三位';
$img3 = $doc3['.article-ogimage']->find('img');
$img3 = fullpath($img,$url);
echo $img3;
?>
</body>

西村大雅 2020/11/16(Mon) 02:40 Home No.816 [返信]
Re: 未定義のプロパティについて
TAの安田です.

「未定義のプロパティ」とのことですが,

$img = $doc['.article-ogimage']->find('img');
$img = fullpath($img,$url);

の記述が不自然です.スクレイピング先の要素を確認すると,

<img src="https://img.gamewith.jp/article/thumbnail/rectangle/175815.png" alt="エースバーンの進化と覚える技&amp;種族値" class="article-ogimage">

となっているため,$doc['.article-ogimage']から更にimg要素を取ることができません.

また,画像のパスが絶対パスになっているので,fullpath関数は必要ありません.



以下のようにしてみてください.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>report</title>
</head>
<body>
<h1>目指せポケモンマスター</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo "<div>";
$url = "https://gamewith.jp/pokemon-sword-shield/article/show/175815";
$doc = phpQuery::newDocumentFileHTML($url);
echo '<h2>使用率ランキング</h2><br><br>';
echo '<br>一位<br>';
$img = $doc['.article-ogimage'];
echo $img;
$url2 = "https://gamewith.jp/pokemon-sword-shield/article/show/207489";
$doc2 = phpQuery::newDocumentFileHTML($url2);
echo '<br>二位<br>';
$img2 = $doc2['.article-ogimage'];
echo $img2;
$url3 = "https://gamewith.jp/pokemon-sword-shield/article/show/207504";
$doc3 = phpQuery::newDocumentFileHTML($url3);
echo '<br>三位<br>';
$img3 = $doc3['.article-ogimage'];
echo $img3;
?>
</body>
</html>
TA 安田 2020/11/17(Tue) 17:25 No.851
上手く表示されません

1つ目のNewsがうまく表示されませんなぜでしょうか
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>スポーツニュース</title>
<style>
div {
float: left;
background: #f0f8ff;
padding: 10px;
width: 300px;
height: 800px;
margin: 5px 15px 10px 15px;
color: #ff6600;
overflow-y: scroll;
}
hl{
font-size: 60px;
background: #f0f8ff;
color: #00ECFF;
border: 1px solid #cccccc;
margin: 5px 150px 150px 10px;
}
body {
background: #f0f8ff;
background-image: url("./thumbnail.png");
}

.c-firstNews{
text-align: center;
overflow-x: hidden;
}
.c-secondNews{
text-align: center;
}
</style>
</head>
<body>
<hl>スポーツニュース</hl>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div class="c-firstNews">';
$url = "ttps://basketballking.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.container'];
echo fullpath($news["li"],$url);
echo '</div>';

echo '<div class="c-secondNews">';
$url = "https://www.nikkansports.com/soccer/world/news/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".newslist"];
echo '</div>';


?>
</body>
</html>

出口裕規 2020/11/17(Tue) 15:35 No.840 [返信]
Re: 上手く表示されません
出口さんのサイトを確認したところ,ニュース一覧は取得・表示までできています.
出口のさんの言っている「1つ目のNews」がどの要素のことを指しているのかわかりません.
もう少し具体的に教えて頂きたいです!
TA-長谷川 2020/11/17(Tue) 15:58 No.841
Re: 上手く表示されません
echo '<div class="c-firstNews">';
$url = "ttps://basketballking.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.container'];
echo fullpath($news["li"],$url);
echo '</div>';
1つ目のNewsはこのサイトでの新着Newsを表しているのですが表示されないです
出口裕規 2020/11/17(Tue) 16:05 No.842
Re: 上手く表示されません
$url = "ttps://basketballking.jp/";
⇒URLの中身が間違えてます!"h"が抜けています!

$url = "https://basketballking.jp/";
上記のように修正してください!
TA-長谷川 2020/11/17(Tue) 16:08 No.844
Re: 上手く表示されません
上手く表示されました.しかしおそらく広告?もついてきてエラーの箇所も出てきてしまいますどうしたらいいですか
出口裕規 2020/11/17(Tue) 16:19 No.846
Re: 上手く表示されません
$news = $doc['.container'];
上記でcontainerクラスを指定していますが,リンク先のサイトにcontainerクラスが複数あり,そこに広告も含まれているので,すべて表示されています.
もっとIDやclassを指定し直した方が良いと思います!
(抽出したい部分を)
TA-長谷川 2020/11/17(Tue) 16:29 No.847
Re: 上手く表示されません
エラー警告が表示される件ですが,PHP内に下記を追加してください!
error_reporting(0); /* 警告文を無視する */
TA-長谷川 2020/11/17(Tue) 16:34 No.848
Re: 上手く表示されません
TAの安田です.

バスケットボールニュースの方ですが,idが「latest-tab-latest」のものを取得してみるといいかもしれません.

CSSが悪さをしているので,コメントアウトしています.CSSは適宜変えてください.


コードはこんな感じで↓

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>スポーツニュース</title>
<style>
// div {
// float: left;
// background: #f0f8ff;
// padding: 10px;
// width: 300px;
// height: 800px;
// margin: 5px 15px 10px 15px;
// color: #ff6600;
// overflow-y: scroll;
// }
// hl{
// font-size: 60px;
// background: #f0f8ff;
// color: #00ECFF;
// border: 1px solid #cccccc;
// margin: 5px 150px 150px 10px;
// }
// body {
// background: #f0f8ff;
// background-image: url("./thumbnail.png");
// }

// .c-firstNews{
// text-align: center;
// overflow-x: hidden;
// }
// .c-secondNews{
// text-align: center;
// }
</style>
</head>
<body>
<hl>スポーツニュース</hl>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div class="c-firstNews">';
$url = "https://basketballking.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['#latest-tab-latest'];
echo $news;
echo '</div>';

echo '<div class="c-secondNews">';
$url = "https://www.nikkansports.com/soccer/world/news/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".newslist"];
echo '</div>';


?>
</body>
</html>
TA 安田 2020/11/17(Tue) 16:40 No.850
fullpath()について

期限も近い中すみませんが、fullpath()を正常に使うことができません。
過去ログにあったような
$news = $doc['取得したクラス名'];
echo fullpath($news['li'],$url);
を試しましたが、サイトによっては、エラーが表示されるがリンクはしっかりとできたり、エラーメッセージしか表示されなくなったりします。
改善策はありませんでしょうか。

以下、ソースコードです。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>プログラミング情報収集システム</title>
<style>
div {
float: left;
background: #F3FFD8;
padding: 10px;
width: 650px;
height: 800px;
margin: 5px 15px 10px 15px;
color: #000066;
overflow-y: scroll;
}
hl{
font-size: 60px;
background: #F3FFD8;
color: #00ECFF;
border: 1px solid #cccccc;
margin: 5px 150px 150px 10px;
}
body {
background: #f0f8ff;
background-image: url("./maxresdefault.jpg");
}

.c-firstArticle{
text-align: center;
overflow-x: hidden;
}
.c-secondArticle{
text-align: center;
}
.firstNews{
text-align: left;
overflow-x: hidden;
}
.secondNews{
text-align: left;
overflow-x: hidden;
}
</style>
</head>
<body>
<hl>プログラミング情報</hl>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div class="c-firstArticle">';
$url = "http://www.itsenka.com/contents/development/c/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.contentsList'];
echo fullpath($news["li"],$url);
echo '</div>';


echo '<div class="firstNews">';
$url = "https://blog.codecamp.jp/programming";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.c-post_title'];
echo fullpath($news['li'],$url);
echo '</div>';


echo '<div class="c-secondArticle">';
$url = "http://www.isl.ne.jp/pcsp/beginC/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".item"];
echo '</div>';


echo '<div class="secondNews">';
$url = "https://news.biglobe.ne.jp/list/015/892/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".kw-news"]->find(".kw-title");
echo $doc[".kw-news"]->find(".date");
echo '</div>';
?>
</body>
</html>

呉浦優輝 2020/11/17(Tue) 13:08 No.832 [返信]
Re: fullpath()について
TAの安田です.

確認したところ,1番上は警告文が表示されるがリンクはしっかりとできています.2番目の所は,警告文のみの表示.3番目と4番目は正常ですね.

警告文に関しては,エラーではないので,「error_reporting(0);」により警告文の表示を無視することができます.

2番目のところは,「c-post_title」クラスの中にli要素がないため,表示できていません.参考までにスクリーンショットを添付しておきます.



以下,コードを書き換えてみたので,参考までに.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>プログラミング情報収集システム</title>
<style>
div {
float: left;
background: #F3FFD8;
padding: 10px;
width: 650px;
height: 800px;
margin: 5px 15px 10px 15px;
color: #000066;
overflow-y: scroll;
}
hl{
font-size: 60px;
background: #F3FFD8;
color: #00ECFF;
border: 1px solid #cccccc;
margin: 5px 150px 150px 10px;
}
body {
background: #f0f8ff;
background-image: url("./maxresdefault.jpg");
}

.c-firstArticle{
text-align: center;
overflow-x: hidden;
}
.c-secondArticle{
text-align: center;
}
.firstNews{
text-align: left;
overflow-x: hidden;
}
.secondNews{
text-align: left;
overflow-x: hidden;
}
</style>
</head>
<body>
<hl>プログラミング情報</hl>
<?php
error_reporting(0); /* 警告文を無視する */

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div class="c-firstArticle">';
$url = "http://www.itsenka.com/contents/development/c/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.contentsList'];
echo fullpath($news["li"],$url);
echo '</div>';


echo '<div class="firstNews">';
$url = "https://blog.codecamp.jp/programming";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc['.c-post_title'];
echo fullpath($news,$url); /* li要素は無いので取得しない */
echo '</div>';


echo '<div class="c-secondArticle">';
$url = "http://www.isl.ne.jp/pcsp/beginC/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".item"];
echo '</div>';


echo '<div class="secondNews">';
$url = "https://news.biglobe.ne.jp/list/015/892/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".kw-news"]->find(".kw-title");
echo $doc[".kw-news"]->find(".date");
echo '</div>';
?>
</body>
</html>

TA 安田 2020/11/17(Tue) 15:04 No.836
Re: fullpath()について
解決しました。丁寧なご説明ありがとうございます。

試行錯誤している間に新たな問題も生じてしまいました。


echo '<div class="c-secondArticle">';
$url = "http://www.isl.ne.jp/pcsp/beginC/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc[".item"]->find("p");
echo '</div>';


上記のコードを反映させたときに、サイトから持ってきた画像が途中までは表示され、あるところからは表示されなくなりました。
ご助力いただけないでしょうか。
呉浦優輝 2020/11/17(Tue) 15:34 No.839
Re: fullpath()について
画像が表示されないのは,fullpath関数を実行していないためです.

スクレイピング先のサイトでは,画像ファイルのURLが相対パスになっていますよね?


以下のように変更して下さい.

echo '<div class="c-secondArticle">';
$url = "http://www.isl.ne.jp/pcsp/beginC/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$item_list = $doc[".item"]->find("p");
echo fullpath($item_list, $url);
echo '</div>';

「$item_list」は,一時的な変数として作成しただけなので,あまり気にしないでください.
授業まで時間がないですが,頑張ってください!
TA 安田 2020/11/17(Tue) 16:07 No.843
Re: fullpath()について
ありがとうございます。
お手数をおかけしました。
呉浦優輝 2020/11/17(Tue) 16:37 No.849
エラーの原因が分かりません

スライドのようにリンク先に飛ぶように試みたところ、下のようなエラーメッセージが出てきました。
PHP Notice: Undefined property: phpQueryObject::$tagName in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 1235
PHP Stack trace:
PHP 1. {main}() /home/s256286/public_html/exsi2020/report.php:0
PHP 2. fullpath() /home/s256286/public_html/exsi2020/report.php:36
PHP 3. image() /home/s256286/public_html/exsi2020/pathChanger.php:5
PHP 4. checkElmType() /home/s256286/public_html/exsi2020/pathChanger.php:40
PHP 5. phpQueryObject->__get() /home/s256286/public_html/exsi2020/pathChanger.php:98

phpQueryObjectが未定義だと書いてあると思うのですが、どこで間違えたのか分かりません。↓ソースコードです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>ゲームニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.famitsu.com/search/?category=news";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".card__body"];
echo "<div>";
echo fullpath($news["li"],$url);
echo "</div>";
?>
</body>
</html>
どこがおかしいか教えていただけると幸いです。

山中永遠 2020/11/16(Mon) 15:16 No.820 [返信]
Re: エラーの原因が分かりません
(ごめんなさい書き漏れあったので、こっちを見てください)
エラーの感じを見たところ、
fullpath($news["li"],$url);の$news["li"]の部分が怪しいですね。
ーーーーー
echo "<div>";
echo fullpath($news["li"],$url);
echo "</div>";
と書いている部分を
echo "<div>";
$img = $news->find("li");
echo fullpath($img,$url);
echo "</div>";
とするのがいいかもしれません。
("li"は"img"と書き間違いかな?でしたらimgに書き換えてみてください。)
河島 2020/11/17(Tue) 02:21 No.827
Re: エラーの原因が分かりません
指示通りに書き直しましたが、エラーのままでした。相変わらずphpQueryが未定義のプロパティだと出てきます。exsi2020内のphpQuery-onefile.phpがおかしいのかと思い、再ダウンロードしましたが変化なしでした。
山中永遠 2020/11/17(Tue) 12:44 No.830
Re: エラーの原因が分かりません
でしたら、一度、問題切り分けのために、
この部分↓
$news = $doc[".card__body"];
echo "<div>";
echo fullpath($news["li"],$url);
echo "</div>";
を消すかコメントアウトしてから実行してみてください。
それでもエラーが出るなら、多分ファイルの位置関係が怪しいです。
でなければ、上で指示した部分が怪しいです。
一度試してみてください。
河島 2020/11/17(Tue) 12:50 No.831
Re: エラーの原因が分かりません
TAの安田です,河島に代わりお答えします.


恐らく,スクレイピングをする箇所を変更する必要があると思います.
対象サイト(https://www.famitsu.com/search/?category=news)の要素を確認したものを,画像として添付しています.

山中さんがやりたいと思っているリンク先は「card__body」クラスの中の「li」要素ではなく,「card__title」クラスの中の「a」要素に入っているものではないでしょうか?

そして,fullpath関数でリンク先を相対パスから絶対パスに書き換える処理をしているのですが,パスがかみ合っていません.
画像にある例だとリンク先が「https://www.famitsu.com/news/202011/17209578.html」となっています.

a要素には「/news/202011/17209578.html」しか入っていませんから,「https://www.famitsu.com/search/?category=news」とくっつけるのは不自然ですよね?(https://www.famitsu.com/search/?category=news/news/202011/17209578.htmlとなってしまいます.)
なので,「https://www.famitsu.com/」とくっつけてあげる必要があります.


以下に適当にコードを書いてみたので,参考にしてみてください.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>ゲームニュース</h1>
<?php
error_reporting(0); /* 警告文を無視する */
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.famitsu.com/search/?category=news"; /* スクレイピング先 */
$uri = "https://www.famitsu.com"; /* fullpath関数用 */
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".card__title"];
echo "<div>";
echo fullpath($news, $uri);
echo "</div>";
?>
</body>
</html>

TA 安田 2020/11/17(Tue) 15:28 No.838
Re: エラーの原因が分かりません
うまくいきました。ありがとうございます。
山中永遠 2020/11/17(Tue) 16:14 No.845
背景画像変えてからがわからない

サイトのURLを貼り付けたのですがうまく表示されませんどうしたらいいでしょうか。またサイトの検証からどうすればいいかわかりません

出口裕規 2020/11/17(Tue) 11:34 No.828 [返信]
Re:
あまり状況がよくわからないですので,エラー文やコードを教えていただいてもよろしいでしょうか?
あくまで可能性として,サイトのURLが間違っているかどうかをもう一度確認してみてください.
また,取得するタグ("img")があっているかも確認してみてください.
TA本信 2020/11/17(Tue) 11:57 No.829
背景画像変えてからがわからない
このようになりました
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>野球ニュース</title>
<style>
body {
background: #f0f8ff;
background-image: url("./thumbnail.png");
}
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
</style>
</head>
<body>
<h1>野球ニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://sports.yahoo.co.jp/news/list?id=npb/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.update>dd'];
echo '</div>';

echo '<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo '</div>';
?>
</body>
</html>
出口裕規 2020/11/17(Tue) 13:09 No.833
Re:
echo $doc['.update>dd'];の'.update>dd'という部分が間違っています.これはあくまで大学サイト内の要素だけなので,ほかのサイトでは使えません.ちゃんと対応する要素を入れてやってみてください.
下に書き換えた例を載せますので,参考にしてください.



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>野球ニュース</title>
<style>
body {
background: #f0f8ff;
background-image: url("./thumbnail.png");
}
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
</style>
</head>
<body>
<h1>野球ニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://sports.yahoo.co.jp/news/list?id=npb";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['#listLinkOutline'];
echo '</div>';

echo '<div class="image-contents">';
$img = $doc['img'];
echo $img;
echo '</div>';
?>
</body>
</html>
TA本信 2020/11/17(Tue) 13:34 No.834
背景画像変えてからがわからない
演習課題についてでは
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "http://natalie.mu/music/news/list";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".NA_articleList"];
このようになっていたのですがこの$newsは何でしょうか
出口裕規 2020/11/17(Tue) 13:48 No.835
背景画像変えてからがわからない
変数ですね!特定の結果を格納するためのものです!
特に意味はないです!名前はnews以外でも大丈夫です!
TA-長谷川 2020/11/17(Tue) 15:26 No.837
無題

ぎりぎりですみません
どこがダメかわかりません

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "hhttps://www.irasutoya.com/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc["#widget-content popular-posts"];

?>
</body>
</html>

村田裕一朗 2020/11/17(Tue) 01:08 No.822 [返信]
Re: 無題
下記の部分が間違ってます、hhttpsになってます、httpsに修正してください。
$url = "hhttps://www.irasutoya.com/";
TA長谷川 2020/11/17(Tue) 01:12 No.823
Re: 無題
すいません自己解決しました
村田裕一朗 2020/11/17(Tue) 01:13 No.824
Re: 無題
返信ありがとうございます
村田裕一朗 2020/11/17(Tue) 01:22 No.825
無題

何度やってみても画像が表示されないのですが、どのようにしたら画像が表示されるのでしょうか。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>吹奏楽ニュース</title>
<style>
div {
float: light;
background: #ffffff;
width: 400px;
padding: 40px;
text-align: light;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
</style>
</head>
<body>
<h1>吹奏楽ニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://news.biglobe.ne.jp/list/021/955/%E5%90%B9%E5%A5%8F%E6%A5%BD.html";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".kw-news:eq(0)"];
$img = $doc['div']->find('img');
$img = fullpath($img, $url);
echo "<div>";
echo $news;
echo "</div>";
?>
</body>
</html>

藤原都 2020/11/13(Fri) 15:14 No.802 [返信]
Re: 無題
前回の質問でできたとあったのですが、
前回できたところから、何を追加して動かなくなったか、
教えていただいてもよろしいでしょうか?
河島 2020/11/13(Fri) 15:44 No.803
Re: 無題
先生がやってくださった和歌山大学の画像は添付できたのですが、レポート用に違うテーマでやろうとしているのですが、画像が出てこないです。
藤原都 2020/11/13(Fri) 16:10 No.804
Re: 無題
お返事が遅れてしまいすみません。
スライド39枚目の「二つのライブラリを取得します」の部分か,「拡張子のtxtを取り除いて下さい」を実施して、一度はできたということに加え、phpファイルを添付してくれていることから、
51ページの部分で詰まっているのではないかと推測します。
ーーーーーーーーーーーーーーーーーーーーーーーー
多分、$news = $doc[".kw-news:eq(0)"];の行で指定している
.kw-news:eq(0)の部分がhtml内のタグとして存在していないのではないかと思います。(もしかしてnews-listかな?)
なので一度そこを見ていただきたく思います。
河島 2020/11/16(Mon) 13:51 No.819
Re: 無題
分かりました。やってみます。
藤原都 2020/11/16(Mon) 18:51 No.821
無題

何回やってもタイトルしか出てきません。どうしてでしょう。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WEB情報収集システム</title>
<style>
</style>
</head>
<body>
<h1>ランキング</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

$url = "https://music.dmkt-sp.jp/rank/k-pop/daily/";
$doc = phpQuery::newDocumentFileHTML($url);

echo "<div>";
$ranking = $doc["#ranking-contents"];
echo $ranking;
echo "</div>";
?>
</body>
</html>

K 2020/11/15(Sun) 19:43 No.812 [返信]
Re: 無題
Kさん,こんにちは.
「何も表示されない」とのことですが,
指定しているサイト(dミュージック)のid="ranking_contents"のところが,スクレイピング対策をされているためだと思います.
一応,コンテンツ内容以外の部分(サイト上部のジャンルなど)はスクレイピングで取得できることは確認しました.
TA-長谷川 2020/11/16(Mon) 13:05 No.818
要求失敗と出てきます

エラーが出たのでコマンドプロンプトで調べたところ
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>ゲームニュース</h1>
PHP Warning: file_get_contents(https://www.famitsu.com/search/?category=news/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 4767
PHP Stack trace:
PHP 1. {main}() /home/s256286/public_html/exsi2020/report.php:0
PHP 2. phpQuery::newDocumentFileHTML() /home/s256286/public_html/exsi2020/report.php:33
PHP 3. phpQuery::newDocumentFile() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4782
PHP 4. file_get_contents() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4767

Warning: file_get_contents(https://www.famitsu.com/search/?category=news/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 4767

Call Stack:
0.0001 223152 1. {main}() /home/s256286/public_html/exsi2020/report.php:0
0.0068 1445808 2. phpQuery::newDocumentFileHTML() /home/s256286/public_html/exsi2020/report.php:33
0.0068 1446032 3. phpQuery::newDocumentFile() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4782
0.0068 1446080 4. file_get_contents() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4767

<div></div></body>
と表示されました。これはこのサイトではスクレイピングができないということでしょうか。それともまた別の原因があるのでしょうか。

山中永遠 2020/11/14(Sat) 16:07 No.807 [返信]
Re: 要求失敗と出てきます
TAの安田です。

指定したURLにページが存在していない為、「failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found」の表示が出るのだと思われます。

投稿してくれたURL(https://www.famitsu.com/search/?category=news/)を確認しましたが、やはりページが存在しないようです。

確認してみて下さい。
TA 安田 2020/11/14(Sat) 20:26 No.810
Re: 要求失敗と出てきます
URL間違えてました。ありがとうございます。もう一つ聞きたいのですが、
PHP Notice: Undefined property: phpQueryObject::$tagName in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 1235
PHP Stack trace:
PHP 1. {main}() /home/s256286/public_html/exsi2020/report.php:0
PHP 2. fullpath() /home/s256286/public_html/exsi2020/report.php:36
PHP 3. image() /home/s256286/public_html/exsi2020/pathChanger.php:5
PHP 4. checkElmType() /home/s256286/public_html/exsi2020/pathChanger.php:40
PHP 5. phpQueryObject->__get() /home/s256286/public_html/exsi2020/pathChanger.php:98

phpQueryObjectが未定義だと書いてあると思うのですが、どこで間違えたのか分かりません。↓ソースコードです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
</style>
</head>
<body>
<h1>ゲームニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://www.famitsu.com/search/?category=news";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc[".card__body"];
echo "<div>";
echo fullpath($news["li"],$url);
echo "</div>";
?>
</body>
</html>
どこがおかしいか教えていただけると幸いです。
山中永遠 2020/11/16(Mon) 11:46 No.817
列を変える法方について

URLごとの内容をそれぞれ異なる列に置きたいのですがどのようにするとよいでしょうか?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>カラオケランキング</title>
<style>
float: left;
text-align:left;
</style>
</head>
<body>
<h1>カラオケ週間ランキングTOP100</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");


$url = "https://www.clubdam.com/app/dam/ranking/vocaloid-weekly.html";
$doc = phpQuery::newDocumentFileHTML($url);
$url2 = "https://www.clubdam.com/app/dam/ranking/animation-weekly.html";
$doc2 = phpQuery::newDocumentFileHTML($url2);

echo "<div>";
$rank = $doc[".ranking-list"];
echo $rank;
echo "</div>";
echo "<div>";
$rank2 = $doc2[".ranking-list"];
echo $rank2;
echo "</div>";
?>
</body>
</html>

辻 遊佑 2020/11/14(Sat) 18:36 No.808 [返信]
Re: 列を変える法方について
TAの安田です.

「異なる列に置きたい」とは,左右に並べる,という解釈でよろしいでしょうか?
以下のサイトがとても分かりやすいと思います.

https://webst8.com/blog/css-float/


また,コードを適当に書き替えてみたので,ご参考までに.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>カラオケランキング</title>
<style>
#ranking-left {
float: left;
width: 50%;
}

#ranking-right {
float: right;
width: 50%;
}
</style>
</head>
<body>
<h1>カラオケ週間ランキングTOP100</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");


$url = "https://www.clubdam.com/app/dam/ranking/vocaloid-weekly.html";
$doc = phpQuery::newDocumentFileHTML($url);
$url2 = "https://www.clubdam.com/app/dam/ranking/animation-weekly.html";
$doc2 = phpQuery::newDocumentFileHTML($url2);

echo "<div id='ranking-left'>";
$rank = $doc[".ranking-list"];
echo $rank;
echo "</div>";
echo "<div id='ranking-right'>";
$rank2 = $doc2[".ranking-list"];
echo $rank2;
echo "</div>";
?>
</body>
</html>
TA 安田 2020/11/14(Sat) 20:05 No.809
Re: 列を変える法方について
ありがとうございます。ご指摘も助かります。
辻 遊佑 2020/11/14(Sat) 20:30 No.811
ブラウザでの確認について

画像データの取得のプログラムを書いて、ブラウザで確認しようとしたところ、認証とパスワードの画面が出てきて自分の画面がブラウザで確認できなくなってしまいました。どのようにしたら確認できるようになるでしょうか。

西村大雅 2020/11/14(Sat) 02:26 Home No.805 [返信]
Re: ブラウザでの確認について
もう一度ユーザ名とパスワードを入力してみてください.
あと,URLが正しいかどうかも確認してください.
ユーザ名:webd
パスワード:Sakaeda2
TA本信 2020/11/14(Sat) 10:58 No.806
背景画像の大きさの調整の仕方

何度も質問に答えてくださってありがとうございます。
背景画像の大きさを調整するにはどうしたら良いでしょうか?

<style>
body {
background-image: url("./画像のURL");

}
</style>

石橋尊 2020/11/13(Fri) 01:55 Home No.799 [返信]
背景画像の大きさの調整の仕方
https://web-manabu.com/html-css60/
上記のリンクを参考にしてみてください!
background-size: 【任意のパラメータ】;
これを追加してあげることで、調整できると思います。
※【任意のパラメータ】には、作成したいなサイトに合うようにpixel数、他のパラメータなどを入力して下さい!
TA-長谷川 2020/11/13(Fri) 11:01 No.801
エラーの原因が分からない

画像データ取得方法のやり方について
何度やってもこのような表示が出てくるのですが、原因が分かりません。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
PHP Warning: require_once(pathChanger.php): failed to open stream: No such file or directory in /home/s256237/public_html/exsi2020/index.php on line 11
PHP Stack trace:
PHP 1. {main}() /home/s256237/public_html/exsi2020/index.php:0

Warning: require_once(pathChanger.php): failed to open stream: No such file or directory in /home/s256237/public_html/exsi2020/index.php on line 11

Call Stack:
0.0002 225168 1. {main}() /home/s256237/public_html/exsi2020/index.php:0

PHP Fatal error: require_once(): Failed opening required 'pathChanger.php' (include_path='.:/usr/share/pear:/usr/share/php:/home/s256237/public_html/exsi2020/phpQuery/:/home/s256237/public_html/exsi2020/phpQuery/plugins/') in /home/s256237/public_html/exsi2020/index.php on line 11
PHP Stack trace:
PHP 1. {main}() /home/s256237/public_html/exsi2020/index.php:0

Fatal error: require_once(): Failed opening required 'pathChanger.php' (include_path='.:/usr/share/pear:/usr/share/php:/home/s256237/public_html/exsi2020/phpQuery/:/home/s256237/public_html/exsi2020/phpQuery/plugins/') in /home/s256237/public_html/exsi2020/index.php on line 11

Call Stack:
0.0002 225168 1. {main}() /home/s256237/public_html/exsi2020/index.php:0

[s256237@webdesign exsi2020]$ Connection reset by 133.42.53.141 port 60022

藤原都 2020/11/10(Tue) 19:22 No.791 [返信]
Re: エラーの原因が分からない
TAの安田です.

「PHP Warning: require_once(pathChanger.php): failed to open stream: No such file or directory」ということで,「pathChanger.php」が存在していません.

スライド39枚目の「二つのライブラリを取得します」の部分か,「拡張子のtxtを取り除いて下さい」が実施できていないのだと思います.

確認してみてください.
TA 安田 2020/11/11(Wed) 14:28 No.793
Re: エラーの原因が分からない
出来ました。ありがとうございました。
藤原都 2020/11/13(Fri) 10:27 No.800
エラーの原因がわかりません

エラーが消えない上、最後の方に画像が密集してしまったのですが原因わかりますか?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web情報収集システム</title>
<style>

</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://youkosozitsuryoku-2nd.com/news/";
$doc = phpQuery::newDocumentFileHTML($url);

$news = $doc["#content"];
echo "<div>";
echo fullpath($news["li"],$url);
echo "</div>";
echo '<div>';
$imgs = $doc['#content']->find('img');
foreach ($imgs as $tmp) {
$tmp2 = fullpath($tmp, "https://youkosozitsuryoku-2nd.com/news/");
echo pq($tmp2);
}
echo '</div>';
?>
</body>
</html>

石橋尊 2020/11/11(Wed) 19:21 Home No.797 [返信]
Re: エラーの原因がわかりません
TAの安田です.

「error_reporting(0);」により,警告文を無視することができます.

2回目で申し訳ありませんが,以下のように書き換えてください.


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web情報収集システム</title>
<style>

</style>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://youkosozitsuryoku-2nd.com/news/";
$doc = phpQuery::newDocumentFileHTML($url);

error_reporting(0); // 警告文を無視する

$news = $doc["#content"];
echo "<div>";
echo fullpath($news['li'], $url);
echo "</div>";
?>
</body>
</html>
TA 安田 2020/11/12(Thu) 17:03 No.798
WinSCPの不具合

WinSCPのexsi2020が消えてしまい、新たに作ろうとしても既に存在していると言われ、下のようなメッセージが出てきました。原因が全く分かりません。どうすればいいでしょうか。
Command 'ls -la '
failed with return code 2 and error message
ls: cannot open directory .: Permission denied.

山中永遠 2020/11/09(Mon) 16:49 No.781 [返信]
Re: WinSCPの不具合
public_htmlの中をみていますか?

WINSCPとかsshの接続の状況の画像をみせてくれるとわかるかもしれません。
吉野 2020/11/09(Mon) 17:36 No.783
Re: WinSCPの不具合
第四回の時にはs256286と学生番号が書かれたファイルがあったのですが、それが表示されず代わりに/<root>という名前になっています。スクリーンショットを添付すると「このファイルは取り扱いできません」と言われ画像を貼れません。
山中永遠 2020/11/10(Tue) 12:46 No.784
Re: WinSCPの不具合
TAの長谷川です.
おそらく,山中さんの場所ではないところに,ファイルを作成しようとしているので,上記のように「権限がない」と怒られているような気がします.

まずは,「ls」コマンドで,自分がどこにいるかを確認してから,
「cd」コマンドで自分の場所へ移動してみてください.
TA-長谷川 2020/11/10(Tue) 13:01 No.785
Re: WinSCPの不具合
すみません,WinSCPで操作しているから,コマンド利用していないですよね...
一応,エラー内容で検索したら,下記のモノが出てきたので,確認してみてください.
https://winscp.net/forum/viewtopic.php?t=11872
TA-長谷川 2020/11/10(Tue) 13:06 No.787
Re: WinSCPの不具合
まず,赤い矢印ところをダブルクリックしてください.次にフォームに /home/s625XXX(自分の学籍番号) を入力すれば,元に戻ると思います.

TA本信 2020/11/10(Tue) 13:20 No.788
Re: WinSCPの不具合
無事開けました。お手数をおかけしました。
山中永遠 2020/11/10(Tue) 14:45 No.790
エラーの原因が分かりません

コマンドプロンプトで以下のようなエラーが出ますが、原因を教えてくれないでしょうか。
[s256286@webdesign exsi2020]$ php index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
PHP Warning: file_get_contents(http://www/wakayama-u.ac.jp/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 4767
PHP Stack trace:
PHP 1. {main}() /home/s256286/public_html/exsi2020/index.php:0
PHP 2. phpQuery::newDocumentFileHTML() /home/s256286/public_html/exsi2020/index.php:12
PHP 3. phpQuery::newDocumentFile() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4782
PHP 4. file_get_contents() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4767

Warning: file_get_contents(http://www/wakayama-u.ac.jp/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/s256286/public_html/exsi2020/phpQuery-onefile.php on line 4767

Call Stack:
0.0002 223744 1. {main}() /home/s256286/public_html/exsi2020/index.php:0
0.0100 1412248 2. phpQuery::newDocumentFileHTML() /home/s256286/public_html/exsi2020/index.php:12
0.0100 1412472 3. phpQuery::newDocumentFile() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4782
0.0100 1412520 4. file_get_contents() /home/s256286/public_html/exsi2020/phpQuery-onefile.php:4767

取得サイト:<br></body>
</html>[s256286@webdesign exsi2020]$

山中永遠 2020/11/05(Thu) 19:22 No.775 [返信]
Re: エラーの原因が分かりません
ソースコードをみせてほしい
吉野 2020/11/05(Thu) 19:46 No.778
Re: エラーの原因が分かりません
Notepad++のスクリーンショットを送ろうとしているのですが「このファイルは取り扱いが出来ません」と表示されて送れないのでテキストだけ貼り付けます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
$url = "http://www/wakayama-u.ac.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.update>dd'];
?>
</body>
</html>
山中永遠 2020/11/06(Fri) 12:21 No.779
Re: エラーの原因が分かりません
吉野です.

他にもあるかもしれませんが.

ソースコードをみると,

$url = "http://www/wakayama-u.ac.jp/";


www.wakayama-u.ac.jp

にしないといけないですね.

wwwのあとです.

良くソースコードをみくらべるといいとおもいます.
吉野 2020/11/06(Fri) 12:38 No.780
情報が表示されない

Web情報収集システム
取得サイト:和歌山大学 -Shape the future for our tomorrow.-
とだけ表示されて情報が全く表示されません。コマンドプロンプトでもエラーはありませんでした。

<!DOCYTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
$url = "http://www.wakayama-u.ac.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.updata>dd'];
?>
</body>
</html>

ナガオ アツキ 2020/11/05(Thu) 19:34 No.776 [返信]
Re: 情報が表示されない
吉野です.

echo $doc['.updata>dd'];

これの
update

a->e

では?
吉野 2020/11/05(Thu) 19:44 No.777
無題

NO.639 を参考にしても文字化けします

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
$url="https://www.oricon.co.jp/news/tag/id/drama/";
$html=file_get_contents($url);
mb_language('Japanese');
$doc=phpQuery::newDocument(mb_convert_encoding($html, 'HTML-ENTITIES', 'auto'));
echo '取得サイト:'.$doc['title']->text().'<dr>';
$article = $doc['article'];
echo $article;
?>
</body>
</html>

s 2020/01/28(Tue) 13:22 No.744 [返信]
Re: 無題
添してくれているコードを試したところ,こちらでは文字化けしませんでした.

ブラウザをGoogleChromeでやってみて下さい.
TA 志垣 2020/01/28(Tue) 14:07 No.745
bodyの中にheader

このプログラムだと、bodyの中にheaderが入ってしまいます。解決応報を教えてください。

s246278 2020/01/27(Mon) 16:15 Home No.741 [返信]
Re: bodyの中にheader
プログラムです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>カレー情報</title>
<style>
header {
background: #f8b500;
background-image: url("./curry.jpg")
}

body {
float: left;
background: #f8b500;
width: 1230px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
}

</style>
</head>
<header>
<h1>最近のカレー</h1>
</header>
<body>
<?php
require_once("phpQuery-onefile.php");
$url = "https://currydaigaku.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '最近のカレー:'.$doc['title']->text().'<dr>';
echo $doc['#news>feed_news'];
?>
</body>
</html>
s246278 2020/01/27(Mon) 16:18 Home No.742
Re: bodyの中にheader
すみませんが,やりたいことが分からないので,答えづらいです.

ただ,bodyの中にheaderが入らないようにしたコードを下に記すので,参考にしてみてください.

----------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>カレー情報</title>
<style>
body{
background: #f8b500;
background-image: url("./curry.jpg")
}

div {
float: left;
background: #f8b500;
width: 1230px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
}

</style>
</head>



<body>
<h1>最近のカレー</h1>
<?php
require_once("phpQuery-onefile.php");
$url = "https://currydaigaku.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '最近のカレー:'.$doc['title']->text().'<dr>';
echo $doc['#news>feed_news'];
?>
</body>
</html>
TA 志垣 2020/01/27(Mon) 19:24 No.743
最新情報と背景の色

https://currydaigaku.jp/のサイトからカレー最新情報を取ってきたいのですが、classがなくて書き方が分からないです。また、背景の色を変えているのに、反映されないです。現時点で、書いているプログラミングはこれです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>カレー情報</title>
<style>
div{
float: left;
background: #f8b500;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
}

</style>
</head>
<body>
<h1>最近のカレー</h1>
<?php
require_once("phpQuery-onefile.php");
$url = "https://currydaigaku.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '最近のカレー:'.$doc['title']->text().'<dr>';
echo $doc['.news>feed_news'];
?>
</body>
</html>

s246278 2020/01/27(Mon) 15:26 Home No.738 [返信]
Re: 最新情報と背景の色
こちらで少し試してみたところ,そのページのニュース部分は取得できませんでした.
もしかしたら,スクレイピングがブロックされているか,今回の単純な手法では難しいのかもしれません.
別のページを利用することをおすすめします.

ちなみに無理やり枠だけ表示させると,背景色は適用されていました.
見えないのは,要素が何もないからです.

また,classが無かったらidをでもいいですよ(というかidがあるならidのほうが基本は楽です)
classは「.news」のように書きますが,idは「#news」のように#を使います.参考にまで.
梅本(TA) 2020/01/27(Mon) 16:10 No.740
無題

選択したボタンによって$urlに代入するリンクを変え、表示する内容を変えようとしているのですが、うまくいきません。間違っているところが分からないので教えていただきたいです。
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://eiga.com/coming/"

echo '<select name = "type">';
echo '<option value = "a">今月</option>';
echo '<option value = "b">来月</option>';
echo '<option value = "c">再来月</option>';
echo "</select>";
echo '<input type = "submit" name = "search" value = "検索" />';
echo "</form>";

if(value == "a"){
$url = "https://eiga.com/coming/"
}

if(value == "b"){
$url = "https://eiga.com/coming/202002/"
}

if(value == "c"){
$url = "https://eiga.com/coming/202003/"
}

$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.list-block'];

foreach($data as $row){
echo pq($row)->find('.img-box')->find(img).'<br>';
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.txt')->text().'<br>';
}

echo'</div>';

echo'<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo '</div>';
?>

a 2020/01/27(Mon) 15:04 No.737 [返信]
Re: 無題
何が上手くいかないのかわからないのですが
いくつか間違っている部分がありますね

echo "</form>";
と書いていますが
まず<form>がないのでその部分を作ってください.

次に
$url = "https://eiga.com/coming/"
のように$urlの末尾に「;」が抜けています


参考サイト
http://www.weblaboratory.jp/WP/phptrial/2011/07/15/sec07/


最後にプログラムを全部まとめています.

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://eiga.com/coming/";

echo '<form action = "index.php" method = "POST">';//ここのindex.phpはaさんがつけているプログラムのファイル名に合わせてください.
echo '<select name = "type">';
echo '<option value = "a">今月</option>';
echo '<option value = "b">来月</option>';
echo '<option value = "c">再来月</option>';
echo "</select>";
echo '<input type = "submit" name = "search" value = "検索" />';
echo "</form>";

if(isset($_POST['type'])){//検索ボタンを押す前だと$_POST['type']の中身に何も入っていなくてエラーが出るのでエラー対策をしています.

if($_POST['type'] == "a"){
$url = "https://eiga.com/coming/";
}

if($_POST['type'] == "b"){
$url = "https://eiga.com/coming/202002/";
}

if($_POST['type'] == "c"){
$url = "https://eiga.com/coming/202003/";
}

}

$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['.list-block'];

foreach($data as $row){
echo pq($row)->find('.img-box')->find(img).'<br>';
echo pq($row)->find('.title')->text().'<br>';
echo pq($row)->find('.txt')->text().'<br>';
}

echo'</div>';

echo'<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo '</div>';
?>
TA長田 2020/01/27(Mon) 15:41 No.739
無題

南海本線だけを表示したいのですが、クラス名が同じためか他の線まで出てしまいます。どうすればいいですか。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>運行状況・天気</title>
<style>
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}

</style>
</head>
<body>
<h1>運行状況・天気</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://www.nankai.co.jp/railinfo.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['#nankailineinfo'];
foreach($data as $row){
echo pq($row)->find('.infoin')->find('.sen')->text().'<br>';
echo pq($row)->find('.infoin')->find('.joukyou')->text().'<br>';
}
echo '</div>';

?>
</body>
</html>

HK 2020/01/27(Mon) 11:25 Home No.732 [返信]
Re: 無題
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>明松のページ</title>
<style>
body {
background: #f0f8ff;
background-image: url("./type-a1.gif");
}
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}

</style>
</head>
<body>
<h1>運行状況・天気</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://www.nankai.co.jp/railinfo.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';

$data = $doc['#nankailineinfo>.infoin'];//! 探すDOMが一段階ずれている.classがinfoinのものだけとりあえず取り出す場合はこう書く

$seraching = '南海本線'; //! 探したい路線名はここに書く

foreach($data as $row){
$line = pq($row)->find('.sen')->text(); //! 路線名のみ取得,上記のDOMが一つずれたためシンプルになっている
if($line == $seraching){
echo $line.'<br>';//! 路線名出力
echo pq($row)->find('.joukyou')->text().'<br>';//! 状況取得&出力,上記のDOMが一つずれたためシンプルになっている
}
}
echo '</div>';

?>
</body>
</html>


今回の場合は,路線名を取得してそれが南海本線かどうかを,if文で分岐させるしかないので,そんな風に書いてます.

また,その関係でDOM要素取得(pq($row)の部分)が一段階ずれてしまうので,$dataの段階で.infoinまで検索して取ってます.


詳細は,プログラムのコメントに書いてあるので
見ておいてください.
TA 明松 2020/01/27(Mon) 13:20 No.736
無題

日本語だけがどうしても文字化けしてしまうのですが、取得先サイトの文字コードに合わせても化けたままで、直し方が分かりません。よろしくお願いします。

<!--FM802の今日のオンエア曲目-->
<!DOCTYPE html>
<html lang = "jp">
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc
margin: 15px 5px 10px 4px;
color: #ff6600;
}
body {
background: #f0f8ff;
}
</style>
</head>
<body>
<h1>FM802オンエア曲目</h1>
<?php
require_once("phpQuery-onefile.php");
//require_once("pathChanger.php");学校サーバでやるときに必要
echo "<div>";
$url = "https://funky802.com/service/OnairList/today";
$doc = phpQuery::newDocumentFileHTML($url,'UTF-8');
$news = $doc[".noa-song-list"];
echo '取得サイト:'.$doc['title']->text().'<br>';
echo "<div>";
echo $news;
echo "</div>";

?>
</body>
</html>

TM 2020/01/26(Sun) 16:22 Home No.730 [返信]
Re: 無題
文字化けについては過去に何度も回答済みです.
一番詳細に回答しているNo.639の私の回答を参考にしてください.
(この回答記事のURLリンクからどうぞ)
梅本(TA) 2020/01/26(Sun) 18:26 Home No.731
無題

大きな表の下にある今日・明日の天気だけを残したい(ツイートから下をなくしたい)のですが、どのようにすればいいかわかりません。よろしくお願いします。

NK 2020/01/26(Sun) 14:42 No.727 [返信]
Re: 無題
プログラムを載せるのを忘れていました
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>

</style>
</head>
<body>
<hl>和歌山うみ情報</hl>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div1>';
$url = "https://www.data.jma.go.jp/gmd/kaiyou/db/tide/suisan/suisan.php?stn=WY";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc['#main>table'];
echo '</div1>';

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div2>';
$url = "https://tenki.jp/wave/6/33/47/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc['#main-column'];
echo '</div2>';
?>
</body>
</html>
NK 2020/01/26(Sun) 14:43 No.728
Re: 無題
こんな感じでよろしいでしょうか.
コード内に一応補足コメントを書いていますので参考にしてください.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>

</style>
</head>
<body>
<hl>和歌山うみ情報</hl>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div1>';
$url = "https://www.data.jma.go.jp/gmd/kaiyou/db/tide/suisan/suisan.php?stn=WY";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc['#main>table'];
echo '</div1>';

require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div2>';
$url = "https://tenki.jp/wave/6/33/47/";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc['#main-column .wave-point-h3']; //「今日・明日の天気●日●発表」の部分
echo $doc['#main-column .wave-forecast-days-wrap']; //実際の天気予報の部分
echo '</div2>';
?>
</body>
</html>
梅本(TA) 2020/01/26(Sun) 15:54 No.729
無題

以下のようにしたところ同じものが複数表示されてしまいます。同じような質問がほかにもありましたがよくわかりません。宜しくお願い致します。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://switch.soft-db.net/";
$doc = phpQuery::newDocumentFileHTML($url);
$url1 = "https://switch.soft-db.net/best/best_01.html";

$doc1 = phpQuery::newDocumentFileHTML($url1);
echo '取得サイト:'.$doc['title']->text().'<br>';

echo '<h2>人気ソフトランキング</h2><br><br>';

$data = $doc1['table'];
foreach($data as $row){
$linktext = pq($row)->find('a');
$linktext = fullpath($data,$url);
$img = pq($row)->find('img');
echo $linktext."<br>";
}




//https://com.wakayama-u.ac.jp/~s246190/exsi2019/report.php

?>
</body>
</html>

2020/01/23(Thu) 19:00 No.720 [返信]
Re: 無題
すみませんが,やりたいことが分からないので,答えづらいです.
元のサイトの「何を」取りたくて,「何の」同じものが複数表示されているのでしょうか.
梅本(TA) 2020/01/23(Thu) 19:26 No.721
Re: 無題
元サイトから画像を取ってきたところ、同じ画像が繰り返し表示されてしまいます。
2020/01/23(Thu) 19:54 No.722
Re: 無題
添付してくれているコードをこちらで実行してみましたが,
https://switch.soft-db.net/best/best_01.html
の結果だけが取れている状態だと思います.


何も重複していないように思います.
どの画像が重複しているのか,もう少し具体的に教えてもらえますか?
TA 志垣 2020/01/24(Fri) 17:18 No.723
Re: 無題
何度もすいません。このサイトだと1から50位のランキングが1回だけ表示されていますが、自分で作ったものだと2回表示されてしまいます。
2020/01/24(Fri) 18:19 No.724
Re: 無題
あなたのコードの$doc1['table']には2つ分のランキング(2つのtable要素)が含まれているので,それをforeachで2つとも出力しています.
よって,1つめのランキングが含まれるもの(=1つめのテーブル)のみを出力したらいいと思います.
コード例は以下になります.


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://switch.soft-db.net/";
$doc = phpQuery::newDocumentFileHTML($url);
$url1 = "https://switch.soft-db.net/best/best_01.html";

$doc1 = phpQuery::newDocumentFileHTML($url1);
echo '取得サイト:'.$doc['title']->text().'<br>';

echo '<h2>人気ソフトランキング</h2><br><br>';

$data = $doc1['.best table'];
$row = $data[0]; //←ここでひとつめのテーブルを指定したものをもとのコードの$rowに代入
$linktext = pq($row)->find('a');
$linktext = fullpath($data,$url1);
//$img = pq($row)->find('img');
echo $linktext."<br>";

?>
</body>
</html>
梅本(TA) 2020/01/24(Fri) 19:10 No.726
無題

以下のように書いたところ、リンク先が表示されず画像も表示されませんでした。この解決方法を教えてください。よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
</head>
<body>
<h1>Web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://switch.soft-db.net/";
$doc = phpQuery::newDocumentFileHTML($url);
$url1 = "https://switch.soft-db.net/best/best_01.html";

$doc1 = phpQuery::newDocumentFileHTML($url1);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo '取得サイト:'.$doc1['title']->text().'<br>';
echo '<h2>人気ソフトランキング</h2><br><br>';

$data = $doc1['.tablesorter'];

foreach($data as $row){
$linktext = pq($row)->find('a');
$linktext = fullpath($linktext,$url);
$img = pq($row)->find('img');
$img = fullpath($img,$url);
echo $linktext."<br>";
}


echo '<h2>発売予定順</h2><br><br>';
$higherText = $doc['.schedule']->find('a');
$count = 1;
foreach ($higherText as $tmp) {
echo $count.':'.pq($tmp).'<br>';
$count = $count + 1;
}
//https://com.wakayama-u.ac.jp/~s246190/exsi2019/report.php

?>
</body>
</html>

2020/01/23(Thu) 10:56 No.717 [返信]
Re: 無題
こちらで試したところ画像は表示されているのですが…
リンク先が表示されないのは,$url1に対してフルパスの処理をしていないからだと思います.
$urlと同じ要領でfullpath()を使ってみてください.
梅本(TA) 2020/01/23(Thu) 14:37 No.719
無題

以下のように書いたところ、同じものが二つ表示されるようになってしまいました。一つにしたいです。

あと、添付した写真のグレーの部分も追加したいのですがやり方がわかりません。よろしくお願いします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UFS-8">
<title>システム</title>
<style>


</style>
</head>
<body>
<h1>漫画最新巻情報</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://calendar.gameiroiro.com/manga.php";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.globalNav'];
echo '</div>';

?>
</body>
</html>

かきくけこ 2020/01/23(Thu) 09:54 No.716 [返信]
Re: 無題
まず,重複して表示されている原因ですが,『.globalNav』が2か所(ページの一番下)あり,その両方をとってきたことが原因です.
とりあえず,『#container』にある方の『.globalNav』をとればいいと思います.

echo $doc['#container > .globalNav'];


次に,table要素のとり方ですが,idやクラスと同じような書き方でtableを指定すれば大丈夫です.(#や.は必要ありません.)

echo $doc['#content-inner > table'];


上記のコードを追加すれば,上手くいくと思います.
TA 志垣 2020/01/23(Thu) 14:26 No.718
表がうまくいきません

http://xn--dkqp0gri91r38rn1wmlurtz.com/archives/37583450.html
このサイトの現在展示中、今後の予定と書いてある部分の表をもってこようとしたのですが、表の形にならない上に、他の部分の表までもってきてしまいます。おそらく、zukanlist_bg01,.zukanlist_bg02としていることに原因があるとは思うのですが、どうすればいいのかわかりません。よろしくお願いします。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web情報収集システム</title>
<style>
body {
background: #f0f8ff;
background-image: url("./katana.jpg");
}
div {
color: #000000;
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
}

</style>
</head>
<body>
<h1>web情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://xn--dkqp0gri91r38rn1wmlurtz.com/archives/37583450.html";
$doc = phpQuery::newDocumentFileHTML($url);
echo $doc[".zukanlist_bg01,.zukanlist_bg02"];
echo '</div>';


?>
</body>
</html>

&#13018; 2020/01/22(Wed) 15:38 No.711 [返信]
Re: 表がうまくいきません
<div class="article-body-inner">
の中にある表を全て取得するやり方は

$doc[".article-body-inner table"]

となります.
これを出力すると1つめに,あなたの取りたい表が表示されると思います.
よって,この1つめの表だけを出力するコードは

echo $doc[".article-body-inner table:eq(0)"];

となります.
梅本(TA) 2020/01/22(Wed) 19:37 No.715
無題

前半で質問している人の文字化け対策をしても文字化けがなおりません。
2つ目のサイトが文字化けします。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Webページ検索システム</title>
</head>
<body>
<h1>Webページ検索システム</h1>
<?php
require_once("phpQuery-onefile.php");
$url_1="http://www.nankai.co.jp/railinfo.html";
$url_2="https://trafficinfo.westjr.co.jp/kinki.html";
$html=file_get_contents($url_2);
mb_language('Japanese');
$doc_2=phpQuery::newDocument(mb_convert_encoding($html, 'HTML-ENTITIES', 'auto'));
$doc_1=phpQuery::newDocumentFileHTML($url_1);
echo '<h2>南海電鉄 運行状況</h2><br><br>';
echo $doc_1["#diainfo"].'<br><br>';
echo '<h2>JR西日本 運行状況</h2><br><br>';
echo $doc_2[".chiku_unko_info"].'<br><br>';
?>
</body>
</html>

わかやま 2020/01/22(Wed) 12:55 No.709 [返信]
Re: 無題
「$doc_1=phpQuery::newDocumentFileHTML($url_1);」
上記のコードと同じように,$url_2も追加してください.

また,
「echo $doc_2[".chiku_unko_info"]->text().'<br><br>';」
にしてください.(->text()を追加です)

こちらで確認したところ,これで文字化けは解決しました.
上手くいかったらまた言ってください.
TA 志垣 2020/01/22(Wed) 18:03 No.714
体験演習です

メジャー体験演習での課題なのですがどこをどう変えていいかわかりません。下記は授業で進めたところのプログラムです。画像になってしまいましたが添付した画像のどの部分を抽出すればよいのかを教えていただきたいです。

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "http://www.wakayama-u.ac.jp/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.update>dd'];
echo '</div>';

echo '<div class="image-contents">';
$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;
echo'</div>';

かきくけこ 2020/01/21(Tue) 22:21 No.708 [返信]
Re: 体験演習です
No.710の質問項目にて,回答いたしました.
TA 志垣 2020/01/22(Wed) 17:50 No.713
無題

取得サイトのシステムエラーがでてしまい、反映されません。
どこがおかしいのでしょうか。
二つ前と同じ質問です。すいません。

<!DOCTYPE html>
<html>
<head>
<meta charset="UFS-8">
<title>システム</title>
<style>


</style>
</head>
<body>
<h1>rrr</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://hlo.tohotheater.jp/net/movie/TNPI3090J01.do";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.section is-lv-02>movies movies-sp-separate ga_add'];
echo '</div>';
?>
</body>
</html>

かきくけこ 2020/01/22(Wed) 15:10 No.710 [返信]
Re: 無題
投稿してくれたコードを基に,他のサイトのURLで試したところ情報を取得できましたが,TOHOのページでは,他の要素も取得できませんでした.

なので,おそらくwebスクレイピングが禁止されているホームページだと思います.
他のサイトでwebスクレイピングしましょう...!
TA 志垣 2020/01/22(Wed) 17:48 No.712
2個のurlを横並びで

昨日質問したんですが、似たようなものをまねしてくださいと言われ、自分なりにやってみたのですが、うまくいきません。横並びにふたつのページを並べたいです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>チャンピオンズリーグ</title>
<style>
div {
float:
background:
width:
padding:
text-align:
border:
margin:
color:
}
.image-contents img {
min-width:
height:
}
body {
background:
background-image: url("./20170910-00075581-roupeiro-000-5-view.jpg");
}
table{
width: 100%;
}
.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>

</head>
<body>
<h1>チャンピオンズリーグ<h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

$url_1 = "https://www.soccer-king.jp/stats/world/cl/match";
$doc_1 = phpQuery::newDocumentFileHTML($url_1);
$url_2 = "https://soccer.yahoo.co.jp/ws/uefa/standings/41";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);
echo '<table><tr>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_1['title']->text();
echo fullpath($doc_1[".contents-main"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_2['title']->text();
echo fullpath($doc_2["#contentMain"],$url_2);
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>

あいうえお 2019/12/03(Tue) 13:59 No.701 [返信]
Re: 2個のurlを横並びで
テーブル内でfullpathを使わなければ表示できました.
下から6行目と9行目を変更しています.
あとは,テーブル内のレイアウトをwidth:50%(2つなので)に変更しています.

------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>チャンピオンズリーグ</title>
<style>
div {
float:
background:
width:
padding:
text-align:
border:
margin:
color:
}
.image-contents img {
min-width:
height:
}
body {
background:
background-image: url("./20170910-00075581-roupeiro-000-5-view.jpg");
}
table{
width: 100%;
}
.td_style{
border-right: dashed;
border-left: dashed;
width: 50%;
}
</style>

</head>
<body>
<h1>チャンピオンズリーグ<h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

$url_1 = "https://www.soccer-king.jp/stats/world/cl/match";
$doc_1 = phpQuery::newDocumentFileHTML($url_1);
$url_2 = "https://soccer.yahoo.co.jp/ws/uefa/standings/41";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);

echo '<table><tr>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_1['title']->text().'<br>';
echo $doc_1[".contents-main"];
echo '<td class="td_style">';
echo '取得サイト:'.$doc_2['title']->text();
echo $doc_2["#contentMain"];
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>
TA 志垣 2019/12/03(Tue) 14:40 No.703
Re: 2個のurlを横並びで
いけました!!ありがとうございます!
あいうえお 2019/12/03(Tue) 15:01 No.704
無題

文字色とURLの色を白色にしたいのですが、うまくいかないです。
どこを変えたらいいでしょうか

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 編み物レシピ まとめ</title>
<style>
div{
.image-contents img {
min-width: 300px;
height: auto;
color: #EEEEEE;
}
link{ color:#FFFFFF;}//この辺に書いてます
color: #FFFFFF
}

body {
background-image: url("./12773118.jfif");

}
div {
.article {
display:block
border: 1px solid #CCCCCC;
margin: 15px 5px 10px 4px;
width:70px;
height:90px;
font-size:20px;
}
}
div {
.MdMTMWidgetList01{
display:block;
position:relative;
padding-bottom: 1px;
font-size:20px;
}
}
div {
.col-s6{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding-bottom: 1px;
font-size:20px;
}
}

table{
width: 100%;
}


.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>
</head>
<body>
<h1>編み物レシピ まとめ</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

$url_1 = "https://www.amuuse.jp/recipe/genre/knitting/";
$doc_1 = phpQuery::newDocumentFileHTML($url_1);
$url_2 = "https://matome.naver.jp/odai/2131818555139491301";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);
$url_3 = "https://www.amuuse.jp/recipe/tool/knitting-crochet/?p=2&category%5B0%5D=%E6%A3%92%E9%87%9D%EF%BC%86%E3%81%8B%E3%81%8E%E9%87%9D ";
$doc_3 = phpQuery::newDocumentFileHTML($url_3);

echo '<table><tr>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_1['title']->text();
echo fullpath($doc_1[".col-m4"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_2['title']->text();
echo fullpath($doc_2[".mdMTMWidget01Content01"],$url_2);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_3['title']->text();
echo fullpath($doc_3[".col-s6.col-m4.match-height"],$url_3);
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>

a 2019/12/03(Tue) 11:53 No.692 [返信]
Re: 無題
文字色を白色にする場合は,bodyタグの中にcolorで色を設定してあげてください!
<style>
body{
background-image: url("./12773118.jfif");
color:#ffffff;
}
</style>

URLの色の設定も以下のサイトを確認してください.
<style>
a:link { color: #0000ff; }
a:visited { color: #000080; }
a:hover { color: #ff0000; }
a:active { color: #ff8000; }
</style>
https://www.tagindex.com/stylesheet/link/color.html
TA長田 2019/12/03(Tue) 12:31 No.700
Re: 無題
できました!
ありがとうございます!
a 2019/12/03(Tue) 14:29 No.702
背景の画像が表示されない

背景の画像が表示されないです。回答お願いします。

<!DOCTYPE html>
<html>
<head>
<meta charest="UTF-8">
<title>ポケモン情報収集</title>
<style>
div {
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #000000;
}
body {
background: #f0f8ff;
background-image: url("./thN89ZGIZT.jpg");
}

</style>
</head>
<body>
<h1>ポケモン情報収集</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://gamewith.jp/pokemon-sword-shield/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.article_outline'];
echo '</div>';
?>

<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
$url = "https://game8.jp/pokemon-sword-shield/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
echo $doc['.menuItem-listItem'];
echo '</div>';
?>




</body>
</html>

y 2019/12/03(Tue) 10:02 No.683 [返信]
Re: 背景の画像が表示されない
お手本と同じようにはしてます。
y 2019/12/03(Tue) 10:21 No.685
Re: 背景の画像が表示されない
背景の画像名(./thN89ZGIZT.jpg)は正しいですか?

こちらで,別の画像で代用したところ,背景はきちんと表示されました.
TA 志垣 2019/12/03(Tue) 10:21 No.686
Re: 背景の画像が表示されない
別の画像でも表示されないです。
画像ファイルはexsi2019に入っているんですが
y 2019/12/03(Tue) 10:49 No.689
Re: 背景の画像が表示されない
学生番号というかアカウントは,s246255ですか?

フォルダ内に画像ファイルはないですよ.

[yoshino@com sys]$ ls -la ./s246255/public_html/exsi2019
total 208
drwxr-xr-x 3 s246255 Students 4096 Dec 3 10:40 .
drwx---r-x 3 s246255 Students 4096 Dec 3 09:49 ..
-rwxr-xr-x 1 s246255 Students 7680 Nov 26 17:30 Thumbs.db
-rwxr-xr-x 1 s246255 Students 156 Nov 19 17:17 hello.html
-rwxr-xr-x 1 s246255 Students 4198 Nov 19 17:25 pathChanger.php
-rwxr-xr-x 1 s246255 Students 167314 Nov 19 17:25 phpQuery-onefile.php
-rwxr-xr-x 1 s246255 Students 1389 Dec 3 10:47 report.php
-rwxr-xr-x 1 s246255 Students 1583 Dec 3 09:54 type-a1.gif
drwxr-xr-x 2 s246255 Students 4096 Dec 3 10:40 ????
[yoshino@com sys]$ ls -la ./s246255/public_html/exsi2019
吉野 2019/12/03(Tue) 10:56 No.690
Re: 背景の画像が表示されない
s246255であっています
exsi2019に入れなおしました。ですが表示されないです。授業でつかった背景。type-a1.gifも表示されないです。

何度もすみません
y 2019/12/03(Tue) 11:52 No.691
Re: 背景の画像が表示されない
でているとおもうけど...

吉野 2019/12/03(Tue) 11:57 No.694
Re: 背景の画像が表示されない
僕の方ではできないです…
yabo 2019/12/03(Tue) 12:15 No.696
Re: 背景の画像が表示されない
吉野 2019/12/03(Tue) 12:19 No.698
Re: 背景の画像が表示されない
できました

ありがとうございます

何度も失礼しました
y 2019/12/03(Tue) 12:29 No.699
枠が何重にも表示されます

サイトの情報を取得したのですが、画像と文章が離れており、枠が何重にも表示されて非常に見にくいです。画像の近くに文章を表示させて、枠も一つにするにはどうすれば良いでしょうか?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ロックフェス新着情報</title>
<style>
body {
background-image:url("./headphone.jpg");
}
div {
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff9900;
}
</style>
</head>
<body>
<h1 style="background-image:url(orange.gif);padding-left:10px;padding-top:4px;">
<font color="#ffffff">ロックフェス新着情報
</font>
</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div>';
echo "<h2>レディクレ</h2>";
$url = "https://radiocrazy.fm/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$news = $doc['.news-list'];
echo fullpath($news["li"],$url);
echo '</div>';
?>
</body>
</html>

D 2019/12/02(Mon) 14:40 No.664 [返信]
Re: 枠が何重にも表示されます
こちらの環境では画像などがないため再現できていませんが,おそらく枠が何重にも表示されていたのは,cssを<div>要素に適用していたので,取得したhtml内の全てに適用されていたためだと思います.

対策として一番外側のdiv要素にcontainerクラスを追加してそこに適応しています.
要素にcssを適用すると大量のタグに適用されてしまうため,クラス単位でcssを設定することをおすすめします.

///////////////////////////////////


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ロックフェス新着情報</title>
<style>
body {
background-image:url("./headphone.jpg");
}
.container{
float: left;
background: #ffffff;
width: 300px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff9900;
}
</style>
</head>
<body>
<h1 style="background-image:url(orange.gif);padding-left:10px;padding-top:4px;">
<font color="#ffffff">ロックフェス新着情報
</font>
</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo '<div class="container">'; //ここにcontainerクラスを追加(cssもdiv要素でなくcontainerクラスに適用)
echo "<h2>レディクレ</h2>";
$url = "https://radiocrazy.fm/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';

$news = $doc['.news-list > li']; //news-listクラス配下のリスト(<li>)部分を取得
echo $news;
//echo fullpath($news["li"],$url); //上記で対応(想像通りの出力になっていなければ言ってください)

echo '</div>';
?>
</body>
</html>
梅本(TA) 2019/12/02(Mon) 16:13 No.669
Re: 枠が何重にも表示されます
枠の問題は解消されたのですが、
$news = $doc['.news-list > li'];
にすると、サイトへ飛べなくなり、元サイトのimg altの部分が画像と重なって表示されます。そこで、echo fullpath($news["li"],$url);に直したら、サイトへも飛べるしaltも消えたのですが、画像とテキストの間隔がかなりあいてしまいました。どうすればよいでしょうか?
D 2019/12/03(Tue) 10:36 No.688
Re: 枠が何重にも表示されます
まず,
$news = $doc['.news-list'];
echo fullpath($news["li"],$url);



$news = $doc['.news-list > li'];
echo fullpath($news, $url);

も,書き方が違うだけでやってることは同じです.フルパス指定すれば同じ出力がされます.

しかし,フルパス指定では要素をそのまま全てもってきてしまうため,元サイトのCSSが適用されていることが前提の画像設定になります.(レスポンシブデザインのため)
よって['.news-list']のようにおおあじな取り方をすると元サイトと同じ複雑なCSS設定が必要となります.
もう少し細かい要素を取ってきて自分できれいに配置するか,元サイトのCSSを頑張って再現してください.
梅本(TA) 2019/12/03(Tue) 12:19 No.697
どこが悪いのか分かりません。

以前に出ていた、回答を参考にして自分で改造したところ何も表示しなくなりました。回答よろしくお願いします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Web情報収集システム s246235 </title>
<style>
div{
float: left;
background: #ffffff;
width: 900px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
body{
background: #f0f8ff;
background-image: url("./main.png");
}
div {
.l-detail l-detail--summary{
display:block;
position:relative;
padding-bottom: 1px;
font-size:20px;
}
}

.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>
</head>
<body>
<h1> 天月ニュース </h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo'<div>';
$url_1 = "https://amatsuki.jp/contents/news";
$doc_1 = phpQuery::newDocumentFileHTML($url);
$url_2 = "https://rockinon.com/artist/7830";
$doc_2 = phpQuery::newDocumentFileHTML($url);

//trは,行列の「列」にあたります.列ごとに1つずつサイトの中身を入れています.
echo '<table><tr>';
echo '<td class="td_style">';
echo '天月ニュース:'.$doc_1['title']->text();
echo fullpath($doc_1[".list-unstyled"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo 'プロフィール:'.$doc_2['title']->text();
echo fullpath($doc_1[".c-summary-profile__block"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '関連記事:'.$doc_2['title']->text();
echo fullpath($doc_2[".l-detail-left"],$url_2);
echo '</td>';
echo '</tr></table>';
?>
?>
</body>
</html>

s246235 2019/12/01(Sun) 17:32 Home No.655 [返信]
Re: どこが悪いのか
回答が遅くなってしまい,すみません...


下から4行目のところで,「?>」を2つ付けていることが原因だと思います.
こちらで試した結果,きちんと表示されましたが,上手くいかなかった場合にはまた聞いてください.



インデント(改行)を変えて見やすくした方がミスに気づきやすいと思います.下記に訂正したコードを貼っておくので,参考にしてください.

-----------

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Web情報収集システム s246235 </title>
<style>
div{
float: left;
background: #ffffff;
width: 900px;
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
body{
background: #f0f8ff;
background-image: url("./main.png");
}
div {
.l-detail l-detail--summary{
display:block;
position:relative;
padding-bottom: 1px;
font-size:20px;
}
}

.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>
</head>
<body>
<h1> 天月ニュース </h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
echo'<div>';
$url_1 = "https://amatsuki.jp/contents/news";
$doc_1 = phpQuery::newDocumentFileHTML($url);
$url_2 = "https://rockinon.com/artist/7830";
$doc_2 = phpQuery::newDocumentFileHTML($url);

//trは,行列の「列」にあたります.列ごとに1つずつサイトの中身を入れています.
echo '<table><tr>';
echo '<td class="td_style">';
echo '天月ニュース:'.$doc_1['title']->text();
echo fullpath($doc_1[".list-unstyled"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo 'プロフィール:'.$doc_2['title']->text();
echo fullpath($doc_1[".c-summary-profile__block"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '関連記事:'.$doc_2['title']->text();
echo fullpath($doc_2[".l-detail-left"],$url_2);
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>
TA 志垣 2019/12/02(Mon) 11:07 No.657
Re: どこが悪いのか
改行しても,このシステムでは反映されないんですね...
失礼しました.
TA 志垣 2019/12/02(Mon) 11:08 No.658
Re: どこが悪い
お手数おかけして申し訳ないです。
s246235 2019/12/02(Mon) 12:34 No.661
Re: どこが悪いのか分
どの辺に問題がありそうか教えてください。
これは改善するのが難しいのでしょうか?
s246235 2019/12/02(Mon) 23:06 No.680
Re: どこが悪いのか
ざっとしか見てないのですが変数名を間違えてませんか?

$url_1 = "https://amatsuki.jp/contents/news";
$doc_1 = phpQuery::newDocumentFileHTML($url);
$url_2 = "https://rockinon.com/artist/7830";
$doc_2 = phpQuery::newDocumentFileHTML($url);

この部分は「phpQuery::newDocumentFileHTML($url)」ではなく「phpQuery::newDocumentFileHTML($url_1);」と「phpQuery::newDocumentFileHTML($url_2);」
ではないでしょうか?
その部分はもう変更されましたか?
TA長田 2019/12/03(Tue) 00:33 No.681
Re: どこが悪いのか
変更した結果、一部修正されたのですが、url2の内容が表示されていません。題名は出ているのですが…
s246235 2019/12/03(Tue) 10:00 No.682
Re: どこが悪いのか
下から6行目のコードで指定しているクラスがよくないです.
下記のコードを入れるとスクレイピングできると思います.

echo fullpath($doc_2[".c-article-middle"],$url_2);
TA 志垣 2019/12/03(Tue) 12:03 No.695
画像が表示されない

画像を取ろうとしてforeach文を使ったんですが、使うと今まで表示されていたものも表示されなくなりました。おそらくそれに関するエラーも出たんですが何が書いてあるかわかりませんでした。

<!DOCTYPE html>
<html>
<head>
<meta charest="UTF-8">
<title>情報収集システム</title>
<style>
div {
float: left;
background: #ffffff;
width: 600px;
padding: 20px;
text-align: left;
border: 0px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px
height: auto;
}
body {
background: #f0f8ff;
background-image: url("./thN89ZGIZT.jpg");
}

</style>
</head>
<body>
<h1>情報収集システム</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div>';

$url = "https://gamewith.jp/pokemon-sword-shield/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['._item'];
foreach($data as $row){
echo pq($row)->find('.media_left _thumbnail is-top')->find('img');
}


echo '</div>';

echo '<div class="image-contents">';

$img = $doc['.bnrIndexDemand']->find('img');
$img = fullpath($img, $url);
echo $img;

echo '</div>';

yabo 2019/12/02(Mon) 11:46 No.659 [返信]
Re: 画像が表示されない
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");

echo '<div>';

$url = "https://gamewith.jp/pokemon-sword-shield/";
$doc = phpQuery::newDocumentFileHTML($url);
echo '取得サイト:'.$doc['title']->text().'<br>';
$data = $doc['._item'];

$count = 1;
foreach($data as $row){
echo pq($row)->find('img').'<br>';
$count = $count + 1;
}
?>

返事が遅れて申し訳ありません.
foreachならこのような感じで表示できると思います.
TA 明松 2019/12/02(Mon) 16:01 No.667
Re: 画像が表示されない
ありがとうございます
yabo 2019/12/03(Tue) 11:54 No.693
無題

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> ドラマニュース</title>
<style>

div {
.return.false {
display:block
border: 1px solid #CCCCCC;
margin: 15px 5px 10px 4px;
width:70px;
height:90px;
font-size:20px;
}
}
div {
.articleArea{
display:block;
position:relative;
padding-bottom: 1px;
font-size:20px;
}
}
div {
.listVisual {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
font-size:20px;
}
}

table{
width: 100%;
}


.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>
</head>
<body>
<h1>ドラマニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");


$url_1 = "https://www.oricon.co.jp/news/tag/id/drama/";
$html=file_get_contents($url_1);
mb_language('Japanese');
$doc_1=phpQuery::newDocument(mb_convert_encoding($html, 'HTML-ENTITIES', 'auto')); //1つめのサイト
$url_2 = "https://www.nikkansports.com/entertainment/drama/news/";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);
$url_3 = "https://thetv.jp/news/drama/";
$doc_3 = phpQuery::newDocumentFileHTML($url_3);


echo '<table><tr>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_1['title']->text();
echo fullpath($doc_1[".card-body-main"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_2['title']->text();
echo fullpath($doc_2[".articleArea"],$url_2);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_3['title']->text();
echo fullpath($doc_3[".listContent.newsList"],$url_3);
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>

二つ目、三つ目のサイトが表示されないです。
どこが間違っていますか。

匿名 2019/12/03(Tue) 10:18 No.684 [返信]
Re: 無題
指定しているクラスを変更すると,いちおうスクレイピングはできました.望まれている箇所かはわかりませんが...
わりと深い階層にあるidを指定しています.

---------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> ドラマニュース</title>
<style>

div {
.return.false {
display:block
border: 1px solid #CCCCCC;
margin: 15px 5px 10px 4px;
width:70px;
height:90px;
font-size:20px;
}
}
div {
.articleArea{
display:block;
position:relative;
padding-bottom: 1px;
font-size:20px;
}
}
div {
.listVisual {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
font-size:20px;
}
}

table{
width: 100%;
}


.td_style{
border-right: dashed;
border-left: dashed;
width: 30%;
}
</style>
</head>
<body>
<h1>ドラマニュース</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");


$url_1 = "https://www.oricon.co.jp/news/tag/id/drama/";
$html=file_get_contents($url_1);
mb_language('Japanese');
$doc_1=phpQuery::newDocument(mb_convert_encoding($html, 'HTML-ENTITIES', 'auto')); //1つめのサイト
$url_2 = "https://www.nikkansports.com/entertainment/drama/news/";
$doc_2 = phpQuery::newDocumentFileHTML($url_2);
$url_3 = "https://thetv.jp/news/drama/";
$doc_3 = phpQuery::newDocumentFileHTML($url_3);


echo '<table><tr>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_1['title']->text();
echo fullpath($doc_1[".card-body-main"],$url_1);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_2['title']->text();
echo fullpath($doc_2[".newslist"],$url_2);
echo '</td>';
echo '<td class="td_style">';
echo '取得サイト:'.$doc_3['title']->text();
echo fullpath($doc_3[".listItem"],$url_3);
echo '</td>';
echo '</tr></table>';
?>
</body>
</html>
TA 志垣 2019/12/03(Tue) 10:36 No.687
無題

文字化けします。どう変更したらいいですか。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div {
float: left;
background: #ffffff;
width: 100px;
height:120px
padding: 20px;
text-align: left;
border: 1px solid #cccccc;
margin: 15px 5px 10px 4px;
color: #ff6677
}

body{
background: #f0f8ff;
background-image: url("./aaa.jfif")
}

</style>
</head>
<body>
<h1></h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://news.livedoor.com/topics/category/ent/";
mb_language('Japanese');//
$doc = phpQuery::newDocumentFileHTML($url);
///html/body/div[2]/div[2]
$news = $doc["#content"];
echo "<div>";
echo $news;
echo "</div>";
?>
</body>
</html>

s 2019/12/02(Mon) 18:29 No.678 [返信]
Re: 無題
No.631で同様の回答をしています.
質問をする前に,同じような質問がないか掲示板内検索して確認してください.(検索ボタンから「文字化け」で検索するなど)
梅本(TA) 2019/12/02(Mon) 18:37 No.679
和訳についての質問です

英語の記事を抜粋したのですが、表示された時に和訳することは可能ですか?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Web情報収集システム</title>
<style>
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
}
</style>
</head>
<body>
<h1>AINEWSより最新情報を抜粋</h1>
<h2>あなたの気になるAIに関する記事が見つかるはずです! 作成者 KOMI SUZUKI</h2>
<h3>((英語の勉強にもなると思いますよ))
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");
$url = "https://artificialintelligence-news.com/";
$doc = phpQuery::newDocumentFileHTML($url);
$news = $doc["#home-mid-wrap:eq(0)"];

echo "<div>";
echo $news;
echo fullpath($news["li"],$url);
echo "</div>";
?>
</body>
</html>

60246134 2019/12/02(Mon) 18:13 Home No.675 [返信]
Re: 和訳についての質問です
もちろん,可能ですが.

この掲示板でやり方を全て聞くのはなしね.
応用部分は,自分である程度作ってみましょう.

かなりつくって,あと少しで出来ない場合のサポートって感じで利用して下さい.
吉野 2019/12/02(Mon) 18:24 No.677
無題

プログラムのサンプルの少し高度な例1を参考にして、駅と時間を設定してダイヤを検索するプログラムを書いたのですが、ダイヤの検索結果が表示されません。どうすればよいのでしょうか。(プログラムが長くて申し訳ないです)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web情報収集システム</title>
</head>
<body>
<h1>web情報収集システム</h1>
<?php

echo "<div>";
echo '<form method = "POST" action = "#" >';
echo '出発:<input type = "text" name = "start" size = "15">';
echo '到着:<input type = "text" name = "last" size = "15">';
echo '日時:<select name="y">';
echo '<option value="2019" selected>2019年</option>';
echo '<option value="2020" >2020年</option>';
echo "</select>";
echo '<select name="m">';
echo '<option value="1" selected>1月</option>';
echo '<option value="2">2月</option>';
echo '<option value="3">3月</option>';
echo '<option value="4">4月</option>';
echo '<option value="5">5月</option>';
echo '<option value="6">6月</option>';
echo '<option value="7">7月</option>';
echo '<option value="8">8月</option>';
echo '<option value="9">9月</option>';
echo '<option value="10">10月</option>';
echo '<option value="11">11月</option>';
echo '<option value="12">12月</option>';
echo "</select>";
echo '<select name="d">';
echo '<option value="01" selected>1日</option>';
echo '<option value="02" >2日</option>';
echo '<option value="03" >3日</option>';
echo '<option value="04" >4日</option>';
echo '<option value="05" >5日</option>';
echo '<option value="06" >6日</option>';
echo '<option value="07" >7日</option>';
echo '<option value="08" >8日</option>';
echo '<option value="09" >9日</option>';
echo '<option value="10" >10日</option>';
echo '<option value="11" >11日</option>';
echo '<option value="12" >12日</option>';
echo '<option value="13" >13日</option>';
echo '<option value="14" >14日</option>';
echo '<option value="15" >15日</option>';
echo '<option value="16" >16日</option>';
echo '<option value="17" >17日</option>';
echo '<option value="18" >18日</option>';
echo '<option value="19" >19日</option>';
echo '<option value="20" >20日</option>';
echo '<option value="21" >21日</option>';
echo '<option value="22" >22日</option>';
echo '<option value="23" >23日</option>';
echo '<option value="24" >24日</option>';
echo '<option value="25" >25日</option>';
echo '<option value="26" >26日</option>';
echo '<option value="27" >27日</option>';
echo '<option value="28" >28日</option>';
echo '<option value="29" >29日</option>';
echo '<option value="30" >30日</option>';
echo '<option value="31" >31日</option>';
echo "</select>";
echo '<select name="h">';
echo '<option value="0">0時</option>';
echo '<option value="1" selected>1時</option>';
echo '<option value="2">2時</option>';
echo '<option value="3">3時</option>';
echo '<option value="4">4時</option>';
echo '<option value="5">5時</option>';
echo '<option value="6">6時</option>';
echo '<option value="7">7時</option>';
echo '<option value="8">8時</option>';
echo '<option value="9">9時</option>';
echo '<option value="10">10時</option>';
echo '<option value="11">11時</option>';
echo '<option value="12">12時</option>';
echo '<option value="13">13時</option>';
echo '<option value="14">14時</option>';
echo '<option value="15">15時</option>';
echo '<option value="16">16時</option>';
echo '<option value="17">17時</option>';
echo '<option value="18">18時</option>';
echo '<option value="19">19時</option>';
echo '<option value="20">20時</option>';
echo '<option value="21">21時</option>';
echo '<option value="22">22時</option>';
echo '<option value="23">23時</option>';
echo "</select>";
echo '<select name="mm">';
echo '<option value="00" selected>0分</option>';
echo '<option value="01">1分</option>';
echo '<option value="02">2分</option>';
echo '<option value="03">3分</option>';
echo '<option value="04">4分</option>';
echo '<option value="05">5分</option>';
echo '<option value="06">6分</option>';
echo '<option value="07">7分</option>';
echo '<option value="08">8分</option>';
echo '<option value="09">9分</option>';
echo '<option value="10">10分</option>';
echo '<option value="11">11分</option>';
echo '<option value="12">12分</option>';
echo '<option value="13">13分</option>';
echo '<option value="14">14分</option>';
echo '<option value="15">15分</option>';
echo '<option value="16">16分</option>';
echo '<option value="17">17分</option>';
echo '<option value="18">18分</option>';
echo '<option value="19">19分</option>';
echo '<option value="20">20分</option>';
echo '<option value="21">21分</option>';
echo '<option value="22">22分</option>';
echo '<option value="23">23分</option>';
echo '<option value="24">24分</option>';
echo '<option value="25">25分</option>';
echo '<option value="26">26分</option>';
echo '<option value="27">27分</option>';
echo '<option value="28">28分</option>';
echo '<option value="29">29分</option>';
echo '<option value="30">30分</option>';
echo '<option value="31">31分</option>';
echo '<option value="32">32分</option>';
echo '<option value="33">33分</option>';
echo '<option value="34">34分</option>';
echo '<option value="35">35分</option>';
echo '<option value="36">36分</option>';
echo '<option value="37">37分</option>';
echo '<option value="38">38分</option>';
echo '<option value="39">39分</option>';
echo '<option value="40">40分</option>';
echo '<option value="41">41分</option>';
echo '<option value="42">42分</option>';
echo '<option value="43">43分</option>';
echo '<option value="44">44分</option>';
echo '<option value="45">45分</option>';
echo '<option value="46">46分</option>';
echo '<option value="47">47分</option>';
echo '<option value="48">48分</option>';
echo '<option value="49">49分</option>';
echo '<option value="50">50分</option>';
echo '<option value="51">51分</option>';
echo '<option value="52">52分</option>';
echo '<option value="53">53分</option>';
echo '<option value="54">54分</option>';
echo '<option value="55">55分</option>';
echo '<option value="56">56分</option>';
echo '<option value="57">57分</option>';
echo '<option value="58">58分</option>';
echo '<option value="59">59分</option>';
echo "</select>";
echo '<input type = "submit" name = "search" value = "検索する" />';
echo "</form>";

$start_station = $_POST['start'];
$last_stastion = $_POST['last'];
$year = $_POST['y'];
$month = $_POST['m'];
$day = $_POST['d'];
$hour = $_POST['h'];
$minute = $_POST['mm'];

require_once('phpQuery-onefile.php');
$start_station = urlencode($start_station);
$last_station = urlencode($last_station);
$year = urlencode($year);
$month = urlencode($month);
$day = urlencode($day);
$hour = urlencode($hour);
$minute = urlencode($minutr);
$url = 'https://transit.yahoo.co.jp/search/result?flatlon=&from='.$start_station.'&tlatlon=&to='.$last_station.'&via=&via=&via=&y='.$year.'&m='.$month.'&d='.$day.'&hh='.$hour.'&mm='.$minute.'&type=1&ticket=ic&expkind=1&ws=3&s=0&al=1&shin=1&ex=1&hb=1&lb=1&sr=1&kw=%E5%92%8C%E6%AD%8C%E5%B1%B1%E5%A4%A7%E5%AD%A6%E5%89%8D';
$doc = phpQuery::newDocumentFileHTML($url);

echo '<div id="train">';
echo $doc['#route01']->find('.routeDetail');
echo '</div>';

?>
</body>
</html>

c 2019/12/02(Mon) 17:42 No.674 [返信]
Re: 無題
スペルミスですね.

$last_stastion = $_POST['last'];



$last_station = $_POST['last'];

になおしてください.
梅本(TA) 2019/12/02(Mon) 18:15 No.676
無題

画像が出てこないのですが、どうしたら出てくるようになるでしょうか。また、リンク先にも飛べるようにしたいのですが、それについても教えていただけますか。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>和歌山温泉</title>
<style>
div{
float:;
background: #ffffff;
width: 550px;
padding: 20px;
text-align:;
border: ;
margin: 5px 4px;
color: #ff6600;
}
.image-contents img {
min-width: 300px;
height: auto;
}
body {
background: #f0f8ff;
}
body{
background: #f0f8ff;
background-image: url("./download.png");
}

</style>
</head>
<body>
<h1>和歌山温泉リスト</h1>
<?php
require_once("phpQuery-onefile.php");
require_once("pathChanger.php");


$url = "https://sp.jorudan.co.jp/onsen/wakayama/";
$doc = phpQuery::newDocumentFileHTML($url);
$img = $doc['.item-list']->find('article');

echo "<div>";
echo $img;
echo "</div>";
?>
</body>
</html

s246253 2019/12/02(Mon) 16:36 Home No.671 [返信]
Re: 無題
$imgの次に以下の1行を加えてください

$img = fullpath($img,$url);

この1行を加えてもらえれば画像が表示されるはずです.
確認してみてください!
TA長田 2019/12/02(Mon) 16:52 No.672
Re: 無題
$img = $doc['.item-list']->find('article');の下です.
こんな感じに書いてください.

$url = "https://sp.jorudan.co.jp/onsen/wakayama/";
$doc = phpQuery::newDocumentFileHTML($url);
$img = $doc['.item-list']->find('article');
$img = fullpath($img,$url);

echo "<div>";
echo $img;
echo "</div>";
TA長田 2019/12/02(Mon) 16:53 No.673
処理 記事No 暗証キー

- JoyfulNote -