0

いくつかの植物に関する情報を取得し、それを mysql テーブルに入れる必要があります。Curl と DOM に関する私の知識はまったくありませんが、次のようになりました。

    set_time_limit(0);
include('simple_html_dom.php');


$ch = curl_init ("http://davesgarden.com/guides/pf/go/1501/"); 

curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;     rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec ($ch); 
curl_close ($ch); 


$html= str_get_html($data);


$e = $html->find("table", 8);

 echo $e->innertext;

さて、ここからどう動けばいいのか本当に迷っているのですが、教えていただけませんか?

ありがとう!

4

4 に答える 4

1

あなたの最善の策は、これをphpでラップすることです;)

はい、これは醜い html コードの醜いハックです。

<?php
ob_start();
system("
    /usr/bin/env links -dump 'http://davesgarden.com/guides/pf/go/1501/' |
    /usr/bin/env perl -lne 'm/((Family|Genus|Species):\s+\w+\s+\([\w-]+\))/ && \
        print $1'
");
$out = ob_get_contents();
ob_end_clean();
print $out;
?>
于 2012-04-23T22:44:01.203 に答える
1

これは混乱です。

しかし、少なくともそれは(やや)一貫した混乱です。

これがローリング プロジェクトではなく 1 回限りの抽出である場合、個人的には、simple_html_dom の代わりにクイック アンド ダーティー正規表現を使用します。それ以外の場合は、タグをいじって一日中そこにいることになります。

たとえば、次の正規表現はタイトルとデータのペアの大部分を引き出します。

$pattern = "/<b>(.*?)</b>\s*<br>(.*?)</?(td|p)>/si";

ただし、すべてを取得する前に、前後のクリーニングを行う必要があります。

私はあなたがこの仕事をしているのをうらやましくない...

于 2012-04-23T22:08:10.690 に答える
0

Simple Html Domを使用すると、任意の要素/要素のコンテンツにアクセスできます。彼らのAPIは非常に簡単です。

于 2012-04-23T23:42:30.980 に答える