file_get_contentsで取得出来ないのは、クッキーやリファラー、ヘッダ等を見てスクレイピング防止しているのだと思いますが、それでもスクレイピングする方法を教えてください。
具体的なスクリプトを教えていただけた方に、ポイントを御礼したいと思います。
普通にできました。rssから最新エントリのurlを取得して、file_get_contentsでソース取得。
文字コードはutf-8で保存。
<?php function pr($var) { echo '<pre>'; print_r($var); echo '</pre>'; } header('Content-Type:text/html; charset=UTF-8'); $feedUrl = 'http://ブログURL.blog99.fc2.com/?xml'; $rss = simplexml_load_file($feedUrl); $newEntryUrl = (string)$rss->item[0]->link; $html = file_get_contents($newEntryUrl); pr($html);
うまくいかないコードとブログURLを提示するといいかもしれません。
追記:
>「全体」の取得はできていました。
>しかしそれをメインの記事部分だけ表示したく、正規表現でentry_bodyなどだけ出力しようとすると、
>どうしても表示出来ないのですが、これはやはりスクレイピング防止という事でしょうか。
抜き出しの処理が間違っているのだと思います。
自分のブログならソースコードも一定(テンプレート書き換えによる変化がない)なので以下のようにすればできました。
<?php function pr($var) { echo '<pre>'; print_r($var); echo '</pre>'; } header('Content-Type:text/html; charset=UTF-8'); $url = 'http://ブログURL.blog99.fc2.com/'; $html = file_get_contents($url); preg_match('/<div class="entry_body">.+?<div class="content">(.+?)<div class="fc2_footer"/isu', $html, $entryBody); pr($entryBody[1]);
ミソは正規表現パターンの修飾子でsを使うことかと。
普通にできました。rssから最新エントリのurlを取得して、file_get_contentsでソース取得。
文字コードはutf-8で保存。
<?php function pr($var) { echo '<pre>'; print_r($var); echo '</pre>'; } header('Content-Type:text/html; charset=UTF-8'); $feedUrl = 'http://ブログURL.blog99.fc2.com/?xml'; $rss = simplexml_load_file($feedUrl); $newEntryUrl = (string)$rss->item[0]->link; $html = file_get_contents($newEntryUrl); pr($html);
うまくいかないコードとブログURLを提示するといいかもしれません。
追記:
>「全体」の取得はできていました。
>しかしそれをメインの記事部分だけ表示したく、正規表現でentry_bodyなどだけ出力しようとすると、
>どうしても表示出来ないのですが、これはやはりスクレイピング防止という事でしょうか。
抜き出しの処理が間違っているのだと思います。
自分のブログならソースコードも一定(テンプレート書き換えによる変化がない)なので以下のようにすればできました。
<?php function pr($var) { echo '<pre>'; print_r($var); echo '</pre>'; } header('Content-Type:text/html; charset=UTF-8'); $url = 'http://ブログURL.blog99.fc2.com/'; $html = file_get_contents($url); preg_match('/<div class="entry_body">.+?<div class="content">(.+?)<div class="fc2_footer"/isu', $html, $entryBody); pr($entryBody[1]);
ミソは正規表現パターンの修飾子でsを使うことかと。
あと、質問者さんがコメントをしているところは補足欄です。
内容が上書きされてしまうので、コメントは回答の下にあるコメント欄に書くようにしてください。
これでできました。classのentryのスペルが間違ってます。
<?php function pr($var) { echo '<pre>'; print_r($var); echo '</pre>'; } header('Content-Type:text/html; charset=UTF-8'); $url = 'http://musicpvfreedownload.blog64.fc2.com/'; $html = file_get_contents($url); preg_match('/(<div class="ently_body">.+?)<!--\/ently_body-->/isu', $html, $entryBody); pr($entryBody[1]);
お忙しい中ありがとうございます。
こちらのブログになるのですが、XAMPPでもさくらの共用でも取得が出来ませんでした。
http://musicpvfreedownload.blog64.fc2.com/
大変お手数おかけしますが、宜しくお願い致します。
あと、質問者さんがコメントをしているところは補足欄です。
2012/09/12 18:14:33内容が上書きされてしまうので、コメントは回答の下にあるコメント欄に書くようにしてください。
これでできました。classのentryのスペルが間違ってます。
2012/09/12 21:31:51