【问题标题】:Scraping specific tag property in PHP using DOMDocument使用 DOMDocument 在 PHP 中抓取特定的标签属性
【发布时间】:2015-01-21 06:37:01
【问题描述】:

我正在尝试根据“属性”从“元”标签中提取内容。像 `

<meta name="keywords" content="9gag,fun,funny,lol,meme,GIF,wtf,omg,fail,video,cosplay,geeky,forever alone" />
<meta name="twitter:image" content="http://images-cdn.9gag.com/images/thumbnail-facebook/14198244_1420182794.8999_AmeJun_n.jpg" />
<meta property="og:title" content="I finished the manga last week, so I wanted to make my on &quot;What Naruto taught me&quot;" />
<meta property="og:site_name" content="9GAG" />
<meta property="og:url" content="http://9gag.com/gag/aGVqbvz" />

... ` 所以我只想得到那些有'og'的内容。 通过 cURL 请求,我已经能够获取属性。

$ch = curl("http://9gag.com/gag/aGVqbvz?ref=fsidebar");
$dom = new DOMDocument();
@$dom->loadHTML($ch);

//echo $ch;
$links = $dom->getElementsByTagName('meta');
//get no of tags or elements
echo $links->length;
echo '<pre>';
foreach ($links as $link) {
    echo $link->getAttribute("property");
    echo '<br>';
}

我怎样才能获得特定于特定属性或名称的内容。

【问题讨论】:

    标签: php web-scraping domdocument


    【解决方案1】:

    XPath 是你的朋友。像//meta[starts-with(@property, "og")]/@content 这样的表达式将获取所有元元素的内容属性,这些元元素的属性属性的值以“og”开头。

    示例:

    $xpath = new DOMXPath($dom);
    $query = '//meta[starts-with(@property, "og")]/@content';
    foreach ($xpath->query($query) as $node) {
        echo $node->value, "\n";
    }
    

    输出:

    I finished the manga last week, so I wanted to make my on "What Naruto taught me"
    9GAG
    http://9gag.com/gag/aGVqbvz
    

    【讨论】:

    • 你能解释一下 foreach 行吗.. :)
    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2013-07-26
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多