【问题标题】:Web scraping in PHP - working with some URLs but fails with othersPHP 中的 Web 抓取 - 使用某些 URL,但使用其他 URL 失败
【发布时间】:2013-10-08 11:45:42
【问题描述】:

我正在使用 curl 为linkedin 个人资料页面进行网络抓取。如果我们尝试从这个 (http://in.linkedin.com/in/ratneshdwivedi) 公开的 URL 中提取数据,它就可以工作。当我登录到linkedin 并尝试从此URL(http://www.linkedin.com/profile/view?id=77597832&locale=en_US&trk=tyah2&trkInfo=tas%3Aravi%20kant%20mishra%2Cidx%3A1-1-1)收集数据时,它不起作用,而是返回空白数据。

以下是我的源代码:

$html= $this->_getScrapingData ('http://in.linkedin.com/in/ratneshdwivedi',10);
preg_match("/<span class=\"full-name\">(.*)<\/span>/i", $html, $match);

 private function _getScrapingData($url,$timeout) {
        $ch = curl_init($url); // initialize curl with given url
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set  useragent
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // write the response to a variable
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds to execute
        curl_setopt($ch, CURLOPT_FAILONERROR, 1); // stop when it encounters an error
        return @curl_exec($ch);

    }   

提前致谢

【问题讨论】:

    标签: php web-scraping webharvest


    【解决方案1】:

    您的脚本使用的 cookie 与您的浏览器不同。您需要先使用您的脚本浏览登录表单。

    使用

    CURLOPT_COOKIEJAR
    CURLOPT_COOKIEFILE
    

    通过您的请求保留 cookie。

    【讨论】:

      【解决方案2】:

      您的脚本是否经过身份验证?

      您链接的页面只能在登录后查看,这可以解释为什么您的脚本返回空数据,因为重定向的登录页面上不存在全名跨度类。

      您可能还想查看http://developer.linkedin.com/documents/profile-api,因为有比抓取页面更好的方法来完成此操作。

      【讨论】:

        【解决方案3】:

        我认为问题在于您在浏览器中登录(我猜您的浏览器有带有一些会话 ID 的 cookie)但是当您调用 curl 时,它对您的 cookie 一无所知。

        解决方案是首先使用您的凭据调用登录请求并保存从linkedin 接收到的cookie。然后使用适当的 cookie 调用您想要的所有请求。只需谷歌如何通过 PHP curl 发送 cookie,我相信之前有人问过这个问题。

        顺便说一句,我认为linkedin有一些你可以使用的API。

        【讨论】:

          猜你喜欢
          • 2019-07-20
          • 2017-12-20
          • 1970-01-01
          • 1970-01-01
          • 2011-03-19
          • 2013-12-04
          • 1970-01-01
          • 2011-04-04
          • 1970-01-01
          相关资源
          最近更新 更多