【发布时间】:2019-09-18 15:50:45
【问题描述】:
我正在尝试从网页中获取所有视频结果:
$ curl -qs https://ok.ru/video/c335170 | pup '.video-card_lk attr{href}' | wc -l
24
另一个方法返回相同的结果:
$ wget --config="/dev/null" -qO- https://ok.ru/video/c335170 | grep -oP '/video/\d+' | sort -u | wc -l
24
编辑 1:使用 Firefox 将网页滚动到末尾并将其保存为 c335170.html,我得到相同的结果:
$ cat c335170.html | grep -oP '/video/\d+' | sort -u | wc -l
24
但是,在网络浏览器上,滚动到末尾后,它会显示 81 个结果。
相同的铅。使用 YouTube 和隐藏来自 http 控制台客户端的结果的“加载更多”按钮:
$ curl -qs https://www.youtube.com/user/impacttvouaga/videos | grep -oP "/watch\?v=[\w-]+" | uniq | wc -l
21
编辑 2:我刚刚使用 Firefox 将此网页作为“网页,仅限 HTML”保存到 RMC_IMPACTV__YouTube.html,然后:
$ cat RMC_IMPACTV__YouTube.html | grep -oP "/watch\?v=[\w-]+" | uniq | wc -l
21
我怎样才能让远程 HTTP 服务器给我所有的结果?
【问题讨论】:
-
@peak Wouah,这比我想象的要复杂得多。这是否意味着我必须编写一个
https://ok.ru特定的 PHP 脚本来检索我想要的内容? -
我会尝试找出 ok.ru 是否没有 API,这样您就可以避免模拟“滚动”触发器的所有复杂性。 (模拟不必在 PHP 中完成...)
-
@peak 首先,我想尝试一些更简单的方法,并将
https://ok.ru/video/c335170与 Firefox 一起保存为Web Page, HTML only到c335170.html但不知何故,firefox不会保存所有结果它显示在这个文件中。知道为什么吗? -
我可以使用 Chrome 的“开发者工具”界面下载扩展的 HTML,但它涉及几个步骤...