我正在抓取一个网站并找到一个字符串,然后当找到该字符串时,我将提取该字符串的一部分。
我正在网站中寻找一个字符串“ twitter:image”,然后找到该字符串时,我将提取该字符串的“ content”值。因此,这是我要抓取的网站的示例。这是该网站的HTML或“查看源代码”:
这是我的代码示例:我正在使用一个名为“ ProxyCrawl”的库
$ch = new ProxyCrawl();
$response = $ch->get($link, false);
if ($response->original_status == 200) {
$result = $response->body;
if (strpos($result, 'name="twitter:image"') !== false) {
Log::debug("found!");
//then extract the content
} else {
//do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
我已经有了检查“ twitter:image”是否存在的代码,但是在提取“ content”值时我没有代码。
任何帮助是极大的赞赏。谢谢!
如果<meta name="twitter:image" />是页面上的唯一元素,则使用此元素:
$ch = new ProxyCrawl();
$response = $ch->get($link, false);
if ($response->original_status == 200) {
$dom = new DOMDocument;
$dom->loadHTML($response->body);
$xpath = new DOMXpath($dom);
$element = $xpath->query("//meta[@name='twitter:image']/@content");
if (!empty($element->item(0))) {
$imageUrl = $element->item(0)->nodeValue;
}
}
Run Code Online (Sandbox Code Playgroud)
否则,如果有多个此类元素,则需要迭代:
$ch = new ProxyCrawl();
$response = $ch->get($link, false);
if ($response->original_status == 200) {
$dom = new DOMDocument;
$dom->loadHTML($response->body);
$xpath = new DOMXpath($dom);
$imageUrls = [];
$elements = $xpath->query("//meta[@name='twitter:image']");
if ($elements !== false) {
foreach ($elements as $element) {
$imageUrls[] = $element->getAttribute('content');
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |