1

私はいくつかのhtmlページを解析しようとしました:

<div class="gs_r"><h3 class="gs_rt"><span class="gs_ctc">[BOOK]</span> <a href="http://exampleA.com" onmousedown="return scife_clk(this.href,'','res','1')">titleA</a></h3><div class="gs_ggs gs_fl"><a href="http://exampleApdf.pdf" onmousedown="return scife_clk(this.href,'gga','gga','1')">
<div class="gs_r"><h3 class="gs_rt"><span class="gs_ctc">[BOOK]</span> <a href="http://exampleB.com" onmousedown="return scife_clk(this.href,'','res','1')">titleB</a></h3><div class="gs_ggs gs_fl"><a href="http://exampleB.doc" onmousedown="return scife_clk(this.href,'gga','gga','1')">

その html ページから、ページのリンク (http://exampleA.com、http://exampleB.com)、タイトル (titleA、titleB)、ドキュメントのリンク (http://exampleApdf.pdf、 http://exampleB.doc) しかし、私は pdf リンクを持つドキュメントの情報を取得したいだけです。その例から、 http://exampleA.com、 titleA 、http://exampleApdf.pdfを取得したいだけです。試してみましたが、空白の結果が得られます。どうすればできますか?ありがとう !:) コードは次のとおりです。

<?php

include 'simple_html_dom.php';
$url = 'http://scholar.google.com/scholar?hl=en&q=data+mining&btnG=&as_sdt=1%2C5&as_sdtp=';
$html = file_get_html($url);
foreach($html->find('div[class=gs_ggs gs_fl]')as $pdfLink){
    if (preg_match('/\.pdf$/i', $pdfLink)) {
       $html2->find('span[class=gs_ctc]');
       echo $html2.$pdfLink;
    }
 }

?>
4

1 に答える 1

0

どのような種類のリソースが返されるかをURLから判断することはできません。

.pdf誰もが拡張子付きのPDFファイルを提供するわけではありません。すべてのWebサービスがディスク上のファイルのファイル名を公開するわけではありません。Content-Typeリソースのタイプを判別するには、HTTP応答ヘッダーのみを使用する必要があります。

見つけたURLごとにHEADリクエストを実行することで、これを効率的に取得できます。

于 2012-07-18T01:19:04.753 に答える