【发布时间】:2019-07-16 05:21:21
【问题描述】:
我是一名新手程序员,正在尝试在 PHP 中找到自己的立足点,目前我想构建一个 YouTube 刮板。
这个抓取工具会在 YouTube 上搜索关键词,比如“drop shipping”,然后返回标题中带有该关键词的链接列表。
到目前为止,这是我得到的:
require('simple_html_dom.php');
$html = file_get_html("https://www.youtube.com/results?search_query=dropshipping");
$videos = [];
$i = 1;
foreach($html ->find("div.yt-lockup yt-lockup-tile yt-lockup-video vve-check clearfix") as $video){
if($i > 10){
break;
}
$videoDetails = $video0->find("a.yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-servicelink spf-link");
$videoTitle = $videoDetails ->title;
$videoUrl = "http://youtube.com" . $videoDetails->href;
echo $videoUrl;
$videos[] = [
"title" => $videoTitle,
"link" => $videoUrl
];
$i++;
}
echo(sizeof($videos));
?>
这会一直输出零(0)。 无法弄清楚这是为什么。我怀疑标签链接不时更改,因为我回显了 html 页面并分析了链接,有时您会将链接类设为“yt-uix-servicelink”,而其他时候将是“yt-uix-会话链接”
【问题讨论】:
-
欢迎来到stackoverflow。这不是一个编码服务网站。您自己尝试过,并向我们展示您迄今为止在Minimal, Complete, and Verifiable example 中所做的事情,您将获得帮助
-
YouTube 条款(自然)禁止抓取。如果你对 search 本身感兴趣,而不是专门通过抓取来实现它,你可以考虑使用官方 API。 search:list 的文档有示例,包括 PHP 示例。
标签: php web-scraping youtube