【问题标题】:How to use nested loops to grab html via proxies using curl?如何使用嵌套循环通过使用 curl 的代理获取 html?
【发布时间】:2011-03-17 18:11:10
【问题描述】:

我正在尝试使用代理获取页面的源代码。它一直有效,直到我遍历 url 并获取源代码。但是,一旦我尝试遍历代理,它就会变慢并超时。我没有收到错误消息,它只是继续工作。这是代理的问题还是代码的问题?我是 PHP 新手,非常感谢任何帮助。

您可以在 pelican-cement.com/bbb.html 上查看该问题。这个项目是试图从某些页面中抓取数据,但我们已经完成了一半。代码如下:

  <html>
<body>

<?
$urls=explode("\n", $_POST['url']);
$proxies=explode("\n", $_POST['proxy']);

for ( $counter = 0; $counter <= 6; $counter++) {
for ( $count = 0; $count <= 6; $counter++) {

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$urls[$counter]);
 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
 curl_setopt($ch, CURLOPT_PROXY,$proxies[$count]);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
 curl_setopt ($ch, CURLOPT_HEADER, 1); 
curl_exec ($ch); 
$curl_scraped_page = curl_exec($ch); 

$FileName = time();
$FileHandle = fopen($FileName, 'w') or die("can't open file");
fwrite($FileHandle, $curl_scraped_page);

$hostname="***";
$username="****";
$password="****";
$dbname="****";
$usertable="****";

$con=mysql_connect($hostname,$username, $password) or die ("<html><script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)</script></html>");
mysql_select_db($dbname ,$con);

$sql="INSERT INTO **** (time, ad1)
VALUES
('$FileName','$domains')";


if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);

fclose($FileHandle);

curl_close($ch);

echo $FileName; 

echo "<br/>";

sleep(1);

}
}

?>

</body>
</html>

【问题讨论】:

    标签: php mysql loops curl nested-loops


    【解决方案1】:

    如果您通过浏览器运行此程序,那么您将遇到超时:http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time

    您可以通过 CLI 模式运行它以避免超时

    【讨论】:

    • 我尝试摆脱 sleep(1) 但即使是 1 个 url 和 1 个代理也需要很长时间。现在它完成了,但时间太长了。 @JohnP
    • 您可以添加一个小计时器来查看其减速的位置。但是当您进行外部调用时,它可能是另一台服务器。
    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多