【问题标题】:Error with cURL - "Could not resolve host: www.bbb.org(; No data record of requested type"cURL 出错 - “无法解析主机:www.bbb.org(; 没有请求类型的数据记录”
【发布时间】:2023-03-26 14:17:01
【问题描述】:

我正在尝试使用 cURL 访问 http://www.bbb.org/us/Find-Business-Reviews/ 的数据。现在我使用 HTTPFox 查看该站点发送了哪些数据,并相应地创建了一个数组以“POST”到页面。但我在访问第 2、3、4、5 页时遇到问题...

这是数组 -

$array = Array();
 $array['__EVENTTARGET'] = 'ctl12$gc1$s$gridResults$ctl23$pagerLinkButton2';
 $array['__EVENTARGUMENT'] = '';
 $array['__LASTFOCUS'] = '';
 $array['__VIEWSTATEFIELDCOUNT'] = 6;
 $array['__VIEWSTATE']  = $View_state;
 $array['__VIEWSTATE1'] = $View_state1;
 $array['__VIEWSTATE2'] = $View_state2;
 $array['__VIEWSTATE3'] = $View_state3;
 $array['__VIEWSTATE4'] = $View_state4;
 $array['__VIEWSTATE5'] = $View_state5;
 $array['ctl12$qn$quickSearch'] = "";
 $array['ctl12$qn$TextBoxWatermarkExtender1_ClientState'] = "";
 $array['ctl12$gc1$s$txtSearch'] = "tax";
 $array['ctl12$gc1$s$CityTextBox'] = "";
 $array['ctl12$gc1$s$ddlState'] = "";
 $array['ctl12$gc1$s$ZipTextBox'] = 10292; 
 $array['ctl12$gc1$s$ddlSort'] = "SCORE DESC";

但我总是遇到同样的错误 -

“无法解析主机:www.bbb.org(;没有请求类型的数据记录”

这是我正在使用的 cURL 函数

function cURL($url, $header=NULL, $p=NULL) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, $header);
        curl_setopt($ch, CURLOPT_NOBODY, $header);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        if ($p) {
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
        }
        $result = curl_exec($ch);
        if ($result) {
            return $result;
        } else {
            return curl_error($ch);
        }
        curl_close($ch);
    }

【问题讨论】:

    标签: php curl web-scraping


    【解决方案1】:

    您认为这里引用的 URL 没有问题吗? :)

    Could not resolve host: www.bbb.org(;
    

    【讨论】:

    • 更明确地说:这不是一个有效的域名:)
    • @All - 但是我正在向该站点发送初始请求,然后它正在工作并显示广告,问题只是当我尝试访问 2,3,4,5...页面时。
    • @Shubham 没关系:URL 有时会损坏。您需要进行一些调试以找出原因(我们无法看到$url 的来源)。
    • @pekka $url 就是这个 - bbb.org/us/Find-Business-Reviews 我使用 HTTPFox 来找出数据发送的位置,它只是这个页面。
    • @Shubham 但在随后的 2,3,4,5... 访问中?你能通过 echo()ing $url 确认它在那里也是正确的吗?
    【解决方案2】:

    可能与您的问题无关,但是:

            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, 1);
    

    是重复的。通过设置 CURLOPT_POST,您已经在告诉 curl 您正在发帖。 CUSTOMREQUEST 用于执行不常见的 HTTP 请求,例如“HEAD”,标准 CURL 函数调用不存在。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2022-01-24
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多