質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1010閲覧

phpQueryでのテキスト取得の正しい指定方法について

teranosan

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/09/24 08:37

前提・実現したいこと

こちらのURL内にある https://db.netkeiba.com/horse/ped/2018104968/ 「table」内のclass「b_ml」値をテキストで取得したいと考えています。 ■取得例 ハービンジャー Harbinger(英) 2006 鹿毛 [血統][産駒] Danzig系 考えられる取得方法は試したのですが、 できなかったため、こちらで質問させて頂きました。 一方で、こちらのURLは正常に取得まで出来ているので、なにが違うのかご教授頂きたく思います。 「https://race.netkeiba.com/race/result.html?race_id=202001020801」

発生している問題・エラーメッセージ

エラーメッセージ等は出ておらず、単純に取得が上手くいってないようです。 file_get_contentsでHTMLが取得できていることは確認しております。

該当のソースコード

PHP

1<?php 2 3 header("Content-Type: text/html; charset=UTF-8"); 4 5 // phpQueryの読み込み 6 require_once("./scraping/phpQuery-onefile.php"); 7 8 // 接続情報の読み込み 9 require_once("./dba.php"); 10 11 ini_set( 'display_errors', 1 ); 12 ini_set('error_reporting', E_ALL); 13 mb_regex_encoding("UTF-8"); 14 15 $html = file_get_contents("https://db.netkeiba.com/horse/ped/2018104968/"); 16 $html = mb_convert_encoding($html,"UTF-8","EUC-JP"); 17 $doc = phpQuery::newDocument($html); 18 19 20 // NG:取得できない。 21 $tmp = $doc[".b_ml"]; 22 foreach( $tmp as $data) 23 { 24 $t = pq($data); 25 echo $t->text()."<br/>"; 26 } 27 28 // NG:取得できない。 29 $tmp = $doc[".blood_table, .detail"]->find("td"); 30 foreach( $tmp as $data) 31 { 32 $t = pq($data); 33 echo $t->text()."<br/>"; 34 } 35 36 // NG:取得できない。 37 $tmp = $doc[".detail .b_ml"]; 38 foreach( $tmp as $data) 39 { 40 $t = pq($data); 41 echo $t->text()."<br/>"; 42 } 43 44 // NG:【5代血統表】のテキストも色々と試したのですが、取得できません。 45 echo $doc[".db_main_deta"]->find(".cate_bar")->find("h2"); 46 echo $doc[".db_main_deta"]->find(".cate_bar"); 47 echo $doc[".db_main_deta"]->find(".cate_bar")->find("h2")->text(); 48 echo $doc[".db_main_deta"]->find(".cate_bar")->text(); 49

試したこと

上記のような様々な形で取得を試みたのですが
1件も取ることができませんでした。

お手数ですが、ご存知の方がいらっしゃいましたら
正しい取得方法を教えていただけますでしょうか。

補足情報(FW/ツールのバージョンなど)

サーバー:ロリポップ
PHP:7.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみません、自己解決しました。

この1行が悪さしていたようです。

PHP

1$html = mb_convert_encoding($html,"UTF-8","EUC-JP");

これをコメントアウトしたところ、表示できるようになりました。
もう一つのページでは問題なかったので盲点でした。

投稿2020/09/24 12:32

teranosan

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問