1

CURL を使用して Craigslist にログインし、投稿したリストのステータスをスクレイピングしています。私が遭遇した問題は、CURL $output から file_get_html への HTML の転送です。Craigslist のステータスは実際には TR 要素内にネストされていますが、最も基本的な機能をテストして、物事が通過しているかどうか (つまり、リンク スクレイピング) を確認したかっただけです。ではない。

たとえば、これは機能しません。

$cookie_file_path = getcwd()."/cookie.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://accounts.craigslist.org/login?LoginType=L&step=confirmation&originalURI=%2Flogin&rt=&rp=&inputEmailHandle='.$email.'&inputPassword='.$password.'&submit=Log%20In');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.craigslist.org');

$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo $output;

//

include_once('simple_html_dom.php');
$html = file_get_html($output);
//find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>'; 

「 http://google.com 」などを入力するとリンクが返されるため、式が機能することはわかっています。

4

2 に答える 2

1

これは、それが行われるべき方法です

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://www.sitename.com');  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);  
$str = curl_exec($curl);  
curl_close($curl);  

$html= str_get_html($str); 
于 2012-01-05T07:26:24.910 に答える
0

file_get_html の代わりに str_get_html を使用すべきではありませんか? $output は文字列なので!

于 2011-07-01T23:57:05.147 に答える