gpt4 book ai didi

php - 是否可以用 Goutte 解析 JSON?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:48 25 4
gpt4 key购买 nike

我正在抓取网站,目前使用 Goutte 解析 HTML 没有问题。但我需要从网站检索 JSON,并且由于 cookie 管理,我不想使用 file_get_contents() 执行此操作 - 这是行不通的。

我可以使用纯 cURL,但在这种情况下我只想使用 Goutte 而不想使用任何其他库。

那么有没有什么方法可以让我通过 Goutte 只解析文本,或者我真的必须用好的旧方法来做这个?

/* Sample Code */
$client = new Client();
$crawler = $client->request('foo');
$crawler = $crawler->filter('bar'); // of course not working

谢谢。

最佳答案

在 Goutte 库中进行了非常深入的搜索后,我找到了一种方法,我想与大家分享。因为 Goutte 是一个非常强大的库,但是有如此复杂的文档。

通过 (Goutte > Guzzle) 解析 JSON

只需获取所需的输出页面并将 json 存储到数组中即可。

$client = new Client(); // Goutte Client
$request = $client->getClient()->createRequest('GET', 'http://***.json');
/* getClient() for taking Guzzle Client */

$response = $request->send(); // Send created request to server
$data = $response->json(); // Returns PHP Array

通过 (Goutte + Guzzle) 使用 Cookie 解析 JSON - 用于身份验证

发送请求到站点页面之一(主页面看起来更好)以获取 cookie,然后使用这些 cookie 进行身份验证。

$client = new Client(); // Goutte Client
$crawler = $client->request("GET", "http://foo.bar");
/* Send request directly and get whole data. It includes cookies from server and
it automatically stored in Goutte Client object */

$request = $client->getClient()->createRequest('GET', 'http://foo.bar/baz.json');
/* getClient() for taking Guzzle Client */

$cookies = $client->getRequest()->getCookies();
foreach ($cookies as $key => $value) {
$request->addCookie($key, $value);
}

/* Get cookies from Goutte Client and add to cookies in Guzzle request */

$response = $request->send(); // Send created request to server
$data = $response->json(); // Returns PHP Array

希望对你有所帮助。因为我几乎花了 3 天时间来了解 Gouttle 及其组件。

关于php - 是否可以用 Goutte 解析 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18722528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com