【问题标题】:Delay the response by some seconds when scraping a website抓取网站时将响应延迟几秒钟
【发布时间】:2017-11-05 00:54:48
【问题描述】:

我正在使用 php 抓取服务器,所以我有网站列表要循环,然后返回每个页面的内容以获取我想要的数据。

部分网站未完全返回的问题,我看到页面完全加载后出现一些数据

我尝试了这两种方法,但我无法获得完整的页面

第一种方法:

$opts = array('http' =>
    array(
        'method'  => 'GET',
        'timeout' => 10 
    ) );

$context  = stream_context_create($opts); 
$html = file_get_contents('some url',false,$context);  
echo $html;

第二种方法

$html = implode('',file('some url')); 
echo $html;

我只想在页面加载后1或2秒后返回页面内容。

url 为例,我无法获得搜索结果

:结果
新闻 照片 视频 标签 按日期过滤
前因后果

【问题讨论】:

  • 这通常是通过 JavaScript 加载的结果。您需要通过可以在无头模式下运行 JavaScript(如 PhantomJS 或 Chrome)的东西进行抓取。
  • 您是说您的脚本仅从您点击的 url 中获取部分 html?我以前没有遇到过这种情况,它通常在我的使用中得到全部或全部。奇怪的。你试过卷曲抓取吗?它有更多你可以玩弄的设置。
  • @Randall 是的,它不会返回整页,我只是尝试使用 curl,它似乎是一样的
  • @apokryfos 我将尝试使用 PhantomJS

标签: php web-scraping


【解决方案1】:

事情并不像看起来那样。 其实你想打的网址是 https://api.swiftype.com/api/v1/public/engines/search.json 因为加载的网页在这个 url 上发出了一个 json 请求。 在该网址中,您必须发布以下 json

$search = array("engine_key"=>"naxCjQ58frTkB_diETvu","page"=>1,"q"=>"kardas","per_page"=>12,"sort_direction"=>"","filters"=>array("page"=>array("category"=>"News")),"facets"=>array("page"=>array("0"=>"tag")));

快速指南:

  1. 在“page”属性中输入一个值,表示您要获取的页码,
  2. 在“q”属性中输入您要搜索的字词,
  3. “per_page”属性是您将获得的条目,尝试一些 值,12 是默认值,
  4. 其余的你必须自己找出来。

一个有效的代码示例

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_URL,"https://api.swiftype.com/api/v1/public/engines/search.json");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($search));
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
curl_setopt($ch,CURLOPT_HEADER, 0);

$data = curl_exec($ch);
curl_close($ch);

检查结果

print_r(json_decode($data));

这东西很漂亮就像他们在盘子上给你一个API...

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2013-09-13
    相关资源
    最近更新 更多