解析中心 API PHP
Parsehub API PHP
如何将结果转储到 MySql 数据库中?
专门解码 gzip 并将其解析为 HP 数组,然后转储到数据库中。
<?php
$connection = mysqli_connect("localhost","root","Aruns@cal");
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}
$db_select = mysqli_select_db($connection, "arunslocal");
if (!$db_select) {
die("Database selection failed: " . mysqli_error());
}
$params = http_build_query(array(
"api_key" => "xxxxxxx",
"format" => "JSON"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
echo "1";
$arr = json_decode($result, true);
echo "2";
foreach((array)$arr as $item){
echo "3";
$name = $item['name'];
$value = $item['value'];
echo "4";
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES(1,3)";
//$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('$name','$value')";
if(!mysqli_query($connection,$sql))
{
die('Error : ' . mysqli_error($connection));
}
}
echo "5";
?>
如何将结果转储到 MySql 数据库中?
专门解码 gzip 并将其解析为 HP 数组,然后转储到数据库中。
数据是 gzip 编码的
你的问题是响应数据是 gzip 编码的。
根据 parsehub 的 API documentation,
The Content-Encoding of this response is always gzip.
解决方案
尝试解码 gzip 响应。
您可以使用 gzdecode
解码 gzip 响应。
同时获取格式为 json 的 API。
然后您可以json_decode
将其转换成数组并使用它。
例子
<?php
$params = http_build_query(array(
"api_key" => "xxxxxx",
"format" => "json"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
$result = gzdecode($result);
echo $result;
$parsed_result = json_decode($result, true);
$yield_data = $parsed_result['yield_data'];
foreach($yield_data as $item){
$name = $item['name'];
$value = $item['value'];
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('{$name}',{$value})";
if(!mysqli_query($connection,$sql)) {
die('Error : ' . mysqli_error($connection));
}
}
?>
输出
{
"yield_data": [
{
"name": "Sri Lanka 3M",
"value": "7.760"
},
{
"name": "Sri Lanka 6M",
"value": "8.500"
},
{
"name": "Sri Lanka 1Y",
"value": "9.054"
},
{
"name": "Sri Lanka 2Y",
"value": "9.283"
},
{
"name": "Sri Lanka 3Y",
"value": "9.588"
},
{
"name": "Sri Lanka 4Y",
"value": "9.850"
},
{
"name": "Sri Lanka 5Y",
"value": "10.000"
},
{
"name": "Sri Lanka 6Y",
"value": "10.100"
},
{
"name": "Sri Lanka 7Y",
"value": "10.150"
},
{
"name": "Sri Lanka 8Y",
"value": "10.200"
},
{
"name": "Sri Lanka 9Y",
"value": "10.250"
},
{
"name": "Sri Lanka 10Y",
"value": "10.300"
},
{
"name": "Sri Lanka 15Y",
"value": "10.575"
}
]
}
您需要遍历 yield_data
数组
请尝试以下操作:
$arr = json_decode($results, true);
foreach($arr['yield_data'] as $item) {
$name = $item['name'];
$value = $item['value'];
}
如何将结果转储到 MySql 数据库中? 专门解码 gzip 并将其解析为 HP 数组,然后转储到数据库中。
<?php
$connection = mysqli_connect("localhost","root","Aruns@cal");
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}
$db_select = mysqli_select_db($connection, "arunslocal");
if (!$db_select) {
die("Database selection failed: " . mysqli_error());
}
$params = http_build_query(array(
"api_key" => "xxxxxxx",
"format" => "JSON"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
echo "1";
$arr = json_decode($result, true);
echo "2";
foreach((array)$arr as $item){
echo "3";
$name = $item['name'];
$value = $item['value'];
echo "4";
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES(1,3)";
//$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('$name','$value')";
if(!mysqli_query($connection,$sql))
{
die('Error : ' . mysqli_error($connection));
}
}
echo "5";
?>
如何将结果转储到 MySql 数据库中? 专门解码 gzip 并将其解析为 HP 数组,然后转储到数据库中。
数据是 gzip 编码的
你的问题是响应数据是 gzip 编码的。
根据 parsehub 的 API documentation,
The Content-Encoding of this response is always gzip.
解决方案
尝试解码 gzip 响应。
您可以使用 gzdecode
解码 gzip 响应。
同时获取格式为 json 的 API。
然后您可以json_decode
将其转换成数组并使用它。
例子
<?php
$params = http_build_query(array(
"api_key" => "xxxxxx",
"format" => "json"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
$result = gzdecode($result);
echo $result;
$parsed_result = json_decode($result, true);
$yield_data = $parsed_result['yield_data'];
foreach($yield_data as $item){
$name = $item['name'];
$value = $item['value'];
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('{$name}',{$value})";
if(!mysqli_query($connection,$sql)) {
die('Error : ' . mysqli_error($connection));
}
}
?>
输出
{
"yield_data": [
{
"name": "Sri Lanka 3M",
"value": "7.760"
},
{
"name": "Sri Lanka 6M",
"value": "8.500"
},
{
"name": "Sri Lanka 1Y",
"value": "9.054"
},
{
"name": "Sri Lanka 2Y",
"value": "9.283"
},
{
"name": "Sri Lanka 3Y",
"value": "9.588"
},
{
"name": "Sri Lanka 4Y",
"value": "9.850"
},
{
"name": "Sri Lanka 5Y",
"value": "10.000"
},
{
"name": "Sri Lanka 6Y",
"value": "10.100"
},
{
"name": "Sri Lanka 7Y",
"value": "10.150"
},
{
"name": "Sri Lanka 8Y",
"value": "10.200"
},
{
"name": "Sri Lanka 9Y",
"value": "10.250"
},
{
"name": "Sri Lanka 10Y",
"value": "10.300"
},
{
"name": "Sri Lanka 15Y",
"value": "10.575"
}
]
}
您需要遍历 yield_data
数组
请尝试以下操作:
$arr = json_decode($results, true);
foreach($arr['yield_data'] as $item) {
$name = $item['name'];
$value = $item['value'];
}