今天看媳妇在工作,从一个系统导入到另外一个系统数据,一次一次的操作很麻烦,干脆想用php写一个脚本来爬取数据,然后通过模拟提交实现数据的转移。
之前很早的时候一直在用php-curl包,最近看到Guzzle http client 比较火,打算体验一下。
安装方法使用composer进行安装:
composer require guzzlehttp/guzzle
我使用的是Guzzle 6,最新版的。下面是官方文档,英文能力不错的可以看一下。
但是官方针对cookie这一处的描述比较少,只有下面的一些介绍,大家可以看看。
http://docs.guzzlephp.org/en/stable/request-options.html#cookies
文档的意思是需要实例化一个GuzzleHttp\Cookie\CookieJarInterface
类,这样才能进行传递。
但是具体的示例没有相关的介绍,今天我整理了下一些相关的使用方法,代码如下。
携带cookie进行请求:
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;
$cookieJar = CookieJar::fromArray([
'PHPSESSID' => 'b68212de1826c64d77b69dc514c2a9cb'
], 'www.devkang.com'); // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。
$client = new Client([
'cookies' => $cookieJar,
]);
$result = $client->get('http://www.devkang.com/');
print_r($result->getBody()->getContents());
下面的也可以达到一样的效果。
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;
$cookieJar = CookieJar::fromArray([
'PHPSESSID' => 'b68212de1826c64d77b69dc514c2a9cb'
], 'www.devkang.com'); // 此处记得请求域名需要保持跟请求的url host一致,否则不会携带此cookie。
$client = new Client();
$result = $client->get('http://www.devkang.com/', [
'cookies' => $cookieJar,
]);
print_r($result->getBody()->getContents());
这个时候你可以携带cookie请求需要的数据了。
花了2个小时候的时间终于把媳妇的系统数据全部写完,以后只要执行下console命令,数据就会自动导入,解放了媳妇双手。科技改变未来,此话不假。
媳妇给奖励今晚吃的好吃的!