【问题标题】:How to crawl page in PHP?如何在 PHP 中抓取页面?
【发布时间】:2021-11-08 07:11:12
【问题描述】:

我收到错误:“错误代码:1020”。 我试图抓取表单数据的页面是:https://v2.gcchmc.org/medical-status-search/

这是我的代码:

$initial = file_get_contents('https://v2.gcchmc.org/medical-status-search/'); $check = preg_replace('/.+?input type="hidden" name="csrfmiddlewaretoken" value="(.+?)".*/sim', '$1'. $initial); 打印$支票;

“错误代码:1020”我试图抓取表单数据的页面是https://v2.gcchmc.org/medical-status-search/。你能帮我看看下面的代码有什么问题吗?

【问题讨论】:

    标签: php web-scraping web-crawler


    【解决方案1】:

    该站点受 cloudflare 保护。启用 javascript 后,您可以绕过 cloudflare,因此通过命令行无法正常工作。但是,您可以通过使用 Puppeteer 来自动执行此操作,Puppeteer 也可以在 PHP 中使用。但是您必须禁用 headless 才能使其工作。

    安装

    composer require nesk/puphpeteer
    npm install @nesk/puphpeteer
    

    脚本(test.php)

    use Nesk\Puphpeteer\Puppeteer;
    require_once __DIR__ . "/vendor/autoload.php";
    
    function getToken($content)
    {
        preg_match_all('/.+?input type="hidden" name="csrfmiddlewaretoken" value="(.+?)".*/sim', $content, $matches);
        return $matches[1][0];
    }
    
    $puppeteer = new Puppeteer;
    $browser = $puppeteer->launch(['headless'=>false]);
    
    /**
     * @var $page \Nesk\Puphpeteer\Resources\Page
     */
    $page = $browser->newPage();
    $page->goto('https://v2.gcchmc.org/medical-status-search/');
    
    var_dump(getToken($page->content()));
    
    $browser->close();
    

    现在您在运行这样的脚本时可能不需要 csrfmiddlewaretoken,但如果您选择使用此功能,则可以从这里更进一步。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多