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

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

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

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

Q&A

解決済

2回答

2661閲覧

PHPQueryによるスクレイピングの方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2017/05/21 07:01

編集2017/05/21 07:56

初めてスクレイピングに挑戦しているのですが上手くいきません。

以下のようなサイトを試しに取得しようと考えています。
http://www2j.biglobe.ne.jp/~tatuta/

少しずつ書いては中身を出してというやり方でやろうとしているのですが一番最初のfile_get_contentsでhtmlデータが取得できないでいます。

出力結果はstring(14122) " �c"になってしまいます。

A:これは正しく取得できているのでしょうか。
B:正しく取得できていない

Bの場合はどこが問題なのでしょうか。お願いします。

<?php ini_set('display_errors', true); date_default_timezone_set('Asia/Tokyo'); require_once('phpQuery-onefile.php'); $HTMLData = file_get_contents('http://www2j.biglobe.ne.jp/~tatuta/'); var_dump($HTMLData); $phpQueryObj = phpQuery::newDocument($HTMLData); $a_list = $phpQueryObj['a']; //var_dump($a_list);

追記
現在以下の形で試してもダメでした。

PHP

1 2$HTMLData = file_get_contents('http://www2j.biglobe.ne.jp/~tatuta/'); 3 //$html=mb_convert_encoding($HTMLData, "UTF-8","x-euc-jp"); 4 5 $HTMLData=mb_convert_encoding($HTMLData, "UTF-8", "x-euc-jp"); 6 7 var_dump($HTMLData);```

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

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

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

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

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

kei344

2017/05/22 07:37

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2017/05/22 07:41

先ほど「解決済」に変更いたしました。
guest

回答2

0

一度、他のサイトのURLでも試してみては?

出力結果はstring(14122) " �c"になってしまいます。

14,122文字は取得出来ているようなので、取得自体は出来ていると思います。
文字コードの設定が必要かもしれませんねー。

投稿2017/05/21 07:21

harashow1701

総合スコア854

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

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

退会済みユーザー

退会済みユーザー

2017/05/21 07:25

コメントありがとうございます。他のサイトでは上手く出力できています。 文字コードの設定はどうやればいいのでしょうか? よろしくお願いします。
harashow1701

2017/05/21 07:26

他のサイトではOKなのですね。 では、該当サイトの文字コードに合わせてみてください。 この場合、なんてググだったら解決策が見つかると思いますか?
退会済みユーザー

退会済みユーザー

2017/05/21 07:28

今ググっています。多分文字コードcharset=x-sjisなのでちょっと試しています。できなかったらサイドお知らせします
退会済みユーザー

退会済みユーザー

2017/05/21 07:32

mb_convert_encoding(): Illegal character encoding specified in ..エラーでてしまいました。 文字コード処理の問題でしょうか。今ググっています。
退会済みユーザー

退会済みユーザー

2017/05/21 07:38

$html=mb_convert_encoding($HTMLData, "UTF-8","x-euc-jp"); var_dump($html); するとstring(13630) " ?c" $html=mb_convert_encoding($HTMLData, 'UTF-8', 'ASCII,JIS,UTF-8,eucJP-win,SJIS-win,x-euc-jp'); var_dump($html);するとstring(15540) " …"となってしまいます。
退会済みユーザー

退会済みユーザー

2017/05/21 07:48

コメントありがとうございます。上記のページnot foundでした。
退会済みユーザー

退会済みユーザー

2017/05/21 08:45

文字コード古すぎる?ので一旦保留して他のサイトのやり易い文字コードのスクレイピングを試しながら空き時間でトライしていこうと思います。※ちなみに他の文字コードUTF-8とかなら一発でした。
guest

0

ベストアンサー

文字コード古すぎる?ので一旦保留して他のサイトのやり易い文字コードのスクレイピングを試しながら空き時間でトライしていこうと思います。※ちなみに他のサイトは文字コードUTF-8で問題なく取得できました。今回は文字コードもしくはそれら以外の要素が原因で取得できなかったと考えられます。

投稿2017/05/22 07:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問