我正在尝试检查是否可以阅读网页的<html>
属性以获取所有者声明的语言。
我检查过99%的网站,我发现信息写为<html lang="XX">
或<html lang="XX-YY">
,但在1个特定网站中我发现它写为<html xml:lang="XX">
,最后一种情况是给出我很头疼。
我试过
$scraper_client = new \Goutte\Client();
$scraper_crawler = $scraper_client->request('GET', $link);
$response = $scraper_client->getResponse();
var_dump( $scraper_crawler->filter('html')->extract('xml:lang')) );
var_dump( $scraper_crawler->filter('html')->extract('xml|lang')) );
var_dump( $scraper_crawler->filter('html')->extract('xml::lang')) );
var_dump( $scraper_crawler->filter('html')->extract('@[xml:lang]')) );
但他们似乎都没有工作。有没有人做过类似的事情? 先感谢您。 S上。
修改
只是为了完成这个问题,这是一个包含导致我出现问题的xml:lang
属性的链接:
答案 0 :(得分:0)
我不知道为什么,但它就像Goutte一样切断了这个属性。
我只能用正则表达式获取值:
$scraper_client = new \Goutte\Client();
$scraper_crawler = $scraper_client->request('GET', $link);
$response = $scraper_client->getResponse();
if (preg_match('/xml:lang=["\']{1}(.*?)["\']{1}/', $response, $matches)) {
var_dump($matches[1]);
} else {
echo 'not found';
}