如何抓取 PHP 中的页面?
How to crawl page in PHP?
我收到错误:“错误代码: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', ''. $initial);
print $check;
“错误代码:1020”我试图抓取表单数据的页面是 https://v2.gcchmc.org/medical-status-search/。你能帮我看看下面的代码有什么问题吗?
该站点受 cloudflare 保护。当你启用 javascript 时你可以绕过 cloudflare,所以通过命令行是行不通的。但是,您可以使用 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 当 运行 这样的脚本时,但是如果您选择使用此功能,您可以从这里进一步。
我收到错误:“错误代码: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', ''. $initial); print $check;
“错误代码:1020”我试图抓取表单数据的页面是 https://v2.gcchmc.org/medical-status-search/。你能帮我看看下面的代码有什么问题吗?
该站点受 cloudflare 保护。当你启用 javascript 时你可以绕过 cloudflare,所以通过命令行是行不通的。但是,您可以使用 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 当 运行 这样的脚本时,但是如果您选择使用此功能,您可以从这里进一步。