求助一个PHP Curl网页源码动态的问题
先道声谢谢了。视频演示:https://thumbsnap.com/qkDgKM5o
网址信息:https://www.toutiao.com/video/7418557232318513703/
我使用PHP的url获取一个网页的时候,它的网页内容一直在跳动,不能获取完整,我知道可能是使用了js动态创建的,但有技术或方法可以获取完整的内容吗?谢谢了
[*]/*
[*] *今日头条video页面的文件头
[*] **/
[*]function toutiao_html_header($url)
[*]{
[*] $header = array(
[*] "Host: https://www.toutiao.com",
[*] "Referer: {$url}",
[*] "set-cookie: tt_webid=7421001700129736202; path=/; expires=Sun, 09 Feb 2025 04:22:07 GMT; domain=toutiao.com; secure; httponly",
[*] 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
[*] 'Accept-Language:zh-CN,zh;q=0.9,en;q=0.8',
[*] 'cookie: ******************************************************************************',
[*] "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
[*] );
[*] return $header;
[*]}
[*]
[*]/**
[*] * 模拟浏览器开始访问请求,这个用于今日头条视频的页面内容获取
[*] */
[*]function fetch_toutiao_video_html($url)
[*]{
[*] $header = toutiao_html_header($url);
[*] $timeout = 40;
[*] $ch = curl_init($url);
[*] curl_setopt($ch, CURLOPT_FAILONERROR, true);
[*] //设置请求头信息
[*] #curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
[*] curl_setopt($ch, CURLOPT_HEADER, $header);
[*] //不取得返回头信息
[*] #curl_setopt($ch, CURLOPT_HEADER, 0);
[*] // 关闭https验证
[*] curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
[*] curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
[*] curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
[*] curl_setopt($ch, CURLOPT_ENCODING, "");
[*] curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
[*] curl_setopt($ch, CURLOPT_AUTOREFERER, true);
[*] curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
[*] curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
[*] curl_setopt($ch, CURLOPT_REFERER, $header);
[*] curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
[*] curl_setopt($ch, CURLOPT_USERAGENT, $header);
[*] $content = curl_exec($ch);
[*] if (curl_errno($ch)) {
[*] echo 'Error:' . curl_error($ch);
[*] } else {
[*] return $content;
[*] }
[*] curl_close($ch);
[*]}复制代码 我查了网络上,有几个同样的问题
1、https://wenku.csdn.net/answer/e12d12f453044ecf8d2a3959ec080971
2、https://cloud.tencent.com/developer/ask/sof/104711852/answer/114173132
3、https://cloud.tencent.com/developer/ask/sof/100838855
我不太明白他们回复的方法,请教各位大佬们了,谢谢了 太高端了 我不会 可以尝试使用Headless Chrome或Puppeteer来抓取动态生成的内容。
qidian8 发表于 2024-11-11 14:21
可以尝试使用Headless Chrome或Puppeteer来抓取动态生成的内容。
谢谢您的回复,在php中应该如何使用呢? 这种动态的网页 我之前研究了很久你百度下:
ChromeDriver抓取动态网页 做爬虫要先分析网页的结构,而不是直接就写请求,现在的网站很多都是前后端分离动态加载。 你可以直接curl他的接口api拿内容 你要获取页面内容不需要输出响应头信息
把这段curl_setopt($ch, CURLOPT_HEADER, $header); 改成curl_setopt($ch, CURLOPT_HEADER, false);
设置头信息函数里面可以把set-cookie相关代码删掉 python + playwright 轻松搞定,php只能通过浏览器分析接口,直接抓接口
页:
[1]