0

コードで提供されている dork を使用して、Google から URL をスクレイピングしようとしています。

現在cURLを使用していますが、「curl_init()は未定義の関数にあります」と言っています

これまでのところ、私は得ました:

 //This is the Pattern for URL finding
$pattern = "~^(http|ftp)(s)?\:\/\/((([a-z0-9]{1,25})(\.)?){2,7})($|/.*$)~i"; 
//Enter your dork here.
$dork = "inurl: login.php";
//Set the Useragent
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311";
//Initialize cURL
$ch = curl_init();
$url = "http://www.google.com/search?q=".$dork;
$timeout = 10;
curl_setopt($ch,CURL_OPT, $url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

$exec = curl_exec($ch);
$contents = curl_getinfo($ch);
//curl_close($ch);

//Set empty url array
$urls = array();
//Find urls on page you just grabbed ^
preg_match_all($pattern, $contents, $matches);

//Assign the urls to the empty array urls
    foreach ($matches[0] as $match)
    {
        $urls[] = "{$match}";
    }

//Remove any duplicates in url array
$vurls = array_unique($urls);
//take out spaces
$urlStr = implode("", $urls);

//count number of unique urls
$count = count($vurls);

//Writing to text file
$fh = fopen('wp.txt', 'w');
fwrite($fh, $urlStr);
fclose($fh);

//Echoing # of urls found.
echo "Done. Found {$count} sites.\n";

何が悪いのかわからず、複数のページもスクレイピングしようとしています。しかし、私はこれにどのように対処すべきか疑問に思っています。

誰かが私を正しい方向に向けることができれば、それは非常に役に立ちます.スプーンフィーディングは必要ありません.

4

2 に答える 2

2

PHP でcURLを有効にする必要があります。これを行うには、次の行を見つけてphp.iniコメントを解除する必要があります。

;extension=php_curl.dll

このようにします:

extension=php_curl.dll


Windows 7ボックスを使用している場合...

  1. php.iniphpエンジンが使用していることを確認してください。
  2. inが ext フォルダーに正しく設定されていることを確認extension_dirします。php.ini
  3. がコメント解除されていることを確認extension=php_curl.dllphp.iniます。
  4. %windir%\system32フォルダーに 2 つのファイルがあることを確認します。

    libeay32.dll
    ssleay32.dll
    

そうでない場合は、これら 2 つのファイルを php フォルダーからコピーする必要があります。


Ubuntuボックスを使用している場合は、次の方法で cURL をインストールする必要がある場合があります。

apt-get install php5-curl
/etc/init.d/apache2 restart

次に、Apache サーバーを再起動します。このコードを使用して、cURL 関数がロードされたかどうかを確認します。

<?php
    phpinfo();
?>
于 2013-04-10T04:23:38.397 に答える
1

PHP が関数を認識しない唯一の理由はcurl_init、cURL サポート ( http://us1.php.net/manual/en/curl.installation.php ) で構成されていない場合です。

の出力phpinfo()を確認して、これを確認できます。

于 2013-04-10T04:23:11.890 に答える