3

私はurlreadMATLABでWebサイトのコンテンツをロードし、それを検索してさらに使用しています。

しかし、必要なコンテンツが特定の内部フレームに配置されているサイトに出会いました。このフレームは、.phpを介してindex.php<iframe>に埋め込まれています。

urlreadメインファイルに埋め込まれているように見えるファイルのURLで使用すると、 targetframecontent.phpのコンテンツではなく、そのindex.phpのコンテンツしか取得できません。

urlreadこれは正しいツールではないか、他のことを見落としている可能性があるため、試行が失敗する可能性があります。このような内部フレームのコンテンツを MATLAB に取得する方法はありますか?


編集:もう少し正確に:

私は通常、以下を使用して Web サイトのコンテンツを MATLAB ワークスペースに読み込みます。

data = urlread('http://[...]index.php')

しかし、それを行うと、親のindex.phpのコンテンツのみが取得され、埋め込まれたtargetframecontent.phpのコンテンツは取得されません。私は、ウェブサイトのソースコードを調べたときに、私が興味を持っているコンテンツを含むウェブサイトの部分がフレームに読み込まれることを理解しました:

<iframe src="http://[...]targetframecontent.php" width="850px" height="1000px" border="0" frameborder="0"></iframe>

urlreadそのため、特定のターゲット フレームに読み込まれる URL を直接使用しようとしました。

ただし、これを行っても、まだindex.phpをロードしているかのように同じコンテンツが得られました。そのため、 targetframecontent.phpの直接の URL を使用しようとするたびにurlreadindex.phpにリダイレクトされるようです。これは、ブラウザでtargetframecontent.phpを読み込もうとしたときにも起こりました。

助けてくれてありがとう。

4

1 に答える 1

4

問題のサイトは HTTP リクエストの Referrer をチェックしているようです。を使用しwgetて、オプションを渡すと、次の--refererものをダウンロードできます<iframe>

$ wget --referer="http://www.sf.tv/sfmeteo/lokalprognosen/index.php?q=Gen%C3%A8ve" -O test_ref "http://www.sf.tv/sfmeteo/lokalprognosen/detailprognose.php?id=&q=Gen%C3%A8ve&max=&drs=0&kiosk=&js=&deeplink=&f="
$ cat test_ref
[...]
<body class="sf">

<!-- referrer:http://www.sf.tv/sfmeteo/lokal -->

    <script type="text/javascript"> <!-- 
        var keineprognose = '0'; 
        // -->
    </script>   


<p class="inv">
    <a href="#anker_cm">zum Inhalt</a><br />
</p>

wgetただし、リファラーを送信しない場合は、次のようになります。

wget -O test_noref "http://www.sf.tv/sfmeteo/lokalprognosen/detailprognose.php?id=&q=Gen%C3%A8ve&max=&drs=0&kiosk=&js=&deeplink=&f="
 <body class="sf" role="application">

<p class="inv">
    <a href="#anker_cm">zum Inhalt</a><br />
</p>
<!--googleoff: all-->    <div id="HEADWRAP" class="sf-header">
  <div class="INNERWRAP">
    <h1 class="inv">SF Schweizer Fernsehen - Navigation</h1>

元の親ページです。

したがって、これを MATLAB に取り込むには、RefererHTTP ヘッダーを設定する必要があります。残念ながら、現在 MATLAB は手元にありませんが、このページは、MATLAB HTTP リクエストでヘッダーを送信する方法を紹介しているようです: http://undocumentedmatlab.com/blog/expanding-urlreads-capabilities/

編集:そのページからは明らかではないため、urlread2関数へのリンクを次に示します。これにはいくつかの例も含まれています:http://www.mathworks.com/matlabcentral/fileexchange/35693-urlread2/content/urlread2.m

于 2013-09-26T00:00:15.073 に答える