抓取时的字体或 Unicode 问题
Font or Unicode issue on Scraping
我正在尝试从站点抓取信息。
本站有这样的
127 East Zhongshan No 2 Rd; 中山东二路127号
但是当我尝试废弃它并回显它时它会显示
127 East Zhongshan No 2 Rd; ä¸å±±ä¸äºè·¯127å·
我也试试UTF-8
有我的php代码
现在请帮我解决这个问题。
function GrabPage($site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
}
$GrabData = GrabPage($site);
$dom = new DOMDocument();
@$dom->loadHTML($GrabData);
$xpath = new DOMXpath($dom);
$mainElements = array();
$mainElements = $xpath->query("//div[@class='col--one-whole mv--col--one-half wv--col--one-whole'][1]/dl/dt");
foreach ($mainElements as $Names2) {
$Name2 = $Names2->nodeValue;
echo "$Name2";
}
首先,您需要先在 PHP 文件之上设置字符集:
header('Content-Type: text/html; charset=utf-8');
您需要转换通过 mb_convert_encoding
获得的 html 标记:
@$dom->loadHTML(mb_convert_encoding($GrabData, 'HTML-ENTITIES', 'UTF-8'));
首先要查看捕获的 HTML 源代码是否正确编码。如果是,请尝试
utf8_decode($Name2)
这应该让您的字符串准备好保存和打印
我正在尝试从站点抓取信息。
本站有这样的
127 East Zhongshan No 2 Rd; 中山东二路127号
但是当我尝试废弃它并回显它时它会显示
127 East Zhongshan No 2 Rd; ä¸å±±ä¸äºè·¯127å·
我也试试UTF-8
有我的php代码
现在请帮我解决这个问题。
function GrabPage($site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
}
$GrabData = GrabPage($site);
$dom = new DOMDocument();
@$dom->loadHTML($GrabData);
$xpath = new DOMXpath($dom);
$mainElements = array();
$mainElements = $xpath->query("//div[@class='col--one-whole mv--col--one-half wv--col--one-whole'][1]/dl/dt");
foreach ($mainElements as $Names2) {
$Name2 = $Names2->nodeValue;
echo "$Name2";
}
首先,您需要先在 PHP 文件之上设置字符集:
header('Content-Type: text/html; charset=utf-8');
您需要转换通过 mb_convert_encoding
获得的 html 标记:
@$dom->loadHTML(mb_convert_encoding($GrabData, 'HTML-ENTITIES', 'UTF-8'));
首先要查看捕获的 HTML 源代码是否正确编码。如果是,请尝试
utf8_decode($Name2)
这应该让您的字符串准备好保存和打印