php curl返回大量js怎么处理

worktile 其他 154

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    处理PHP Curl返回大量js的方法有以下几种:

    1. 解析html:使用PHP的DOMDocument库可以解析返回的html,然后提取出其中的js代码。你可以使用getElementsByTagName方法来获取所有的script标签,然后再将标签的内容提取出来。

    “`php
    $curlResponse = curl_exec($curlHandle); // 执行curl请求,获取返回的html
    $dom = new DOMDocument();
    @$dom->loadHTML($curlResponse);

    $scriptTags = $dom->getElementsByTagName(‘script’);
    foreach ($scriptTags as $scriptTag) {
    $jsCode = $scriptTag->nodeValue;
    // 处理js代码
    }
    “`

    2. 使用正则表达式提取:如果你对正则表达式比较熟悉,也可以使用正则表达式来提取返回的html中的js代码。

    “`php
    $curlResponse = curl_exec($curlHandle); // 执行curl请求,获取返回的html
    preg_match_all(‘/]*>(.*?)<\/script>/is’, $curlResponse, $matches);
    $jsCodes = $matches[1];

    foreach ($jsCodes as $jsCode) {
    // 处理js代码
    }
    “`

    3. 使用第三方库:如果以上方法对你来说比较复杂,你可以使用一些第三方库来处理返回的html中的js代码。例如,使用PHP Simple HTML DOM Parser库:

    “`php
    include(‘simple_html_dom.php’);

    $curlResponse = curl_exec($curlHandle); // 执行curl请求,获取返回的html
    $html = str_get_html($curlResponse);

    $jsCodes = $html->find(‘script’);
    foreach ($jsCodes as $jsCode) {
    $jsCode = $jsCode->innertext;
    // 处理js代码
    }
    “`

    无论你选择哪种方法,都可以根据具体的需求来处理返回的大量js代码。你可以将其保存到文件中,或者提取其中的关键信息。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    当使用PHP的CURL库访问一个网页时,有时会返回大量的JavaScript代码。这种情况下,你可以使用以下几种方法来处理返回的JavaScript代码:

    1. 忽略JavaScript代码:如果你对网页内容中的JavaScript代码不感兴趣,你可以在CURL请求中设置`CURLOPT_RETURNTRANSFER`选项为true,这样就只会返回网页的HTML内容,而不会包含JavaScript代码。例如:

    “`php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    “`

    2. 解析和处理JavaScript代码:如果你对网页中的JavaScript代码感兴趣,并且想要解析和处理它们,你可以使用PHP的库来处理JavaScript代码,例如V8Js。V8Js是一个PHP扩展,它提供了使用Google的V8引擎执行JavaScript代码的能力。你可以使用V8Js来解析和执行返回的JavaScript代码,例如:

    “`php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    $v8 = new V8Js();
    $v8->executeString($result);
    “`

    3. 使用正则表达式提取网页内容:如果你只关注特定的网页内容,而不是整个JavaScript代码,你可以使用正则表达式来提取所需的内容。你可以通过正则表达式匹配特定的标记或模式来提取所需的内容。例如:

    “`php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    $pattern = ‘/

    (.*?)<\/div>/s’;
    preg_match($pattern, $result, $matches);

    $content = $matches[1];
    “`

    4. 使用第三方库或工具:你还可以使用第三方库或工具来处理返回的JavaScript代码。例如,如果你使用PHP Laravel框架,你可以使用Laravel的Blade模板引擎来处理返回的HTML和JavaScript代码。Blade模板引擎提供了一种简单的方式来处理和渲染网页中的内容。另外,还有其他第三方库和工具可供选择,你可以根据自己的需求选择合适的。

    5. 调用JavaScript解释器:最后一种方法是将返回的JavaScript代码保存到一个临时文件中,然后通过调用JavaScript解释器来执行该文件。你可以使用PHP的`shell_exec`函数来执行系统命令,例如:

    “`php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    $tmpFile = tempnam(sys_get_temp_dir(), ‘js’);
    file_put_contents($tmpFile, $result);

    $output = shell_exec(“node “. $tmpFile);

    unlink($tmpFile);
    “`

    以上是处理CURL返回的大量JavaScript代码的几种方法。根据你的需求和实际情况选择适合你的方法。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    当使用PHP的CURL扩展从网页获取内容时,有时会遇到返回大量JavaScript脚本的情况。在处理这种情况时,有几种方法可以选择。

    1. 忽略JavaScript脚本:可以通过设置CURLOPT_RETURNTRANSFER选项为true来忽略JavaScript脚本,只返回网页内容。这样可以忽略掉大量的JavaScript代码,只保留网页的静态内容。

    “`php
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    “`

    2. 使用正则表达式提取所需内容:如果需要提取特定的内容,可以使用正则表达式来匹配和提取。例如,如果需要提取网页中的某个特定元素,可以使用正则表达式匹配标签及其内容。然后可以使用preg_match或preg_match_all函数来提取匹配的内容。

    “`php
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    $pattern = ‘/

    (.*?)<\/div>/s’;
    preg_match($pattern, $response, $matches);
    $content = $matches[1];
    “`

    3. 使用第三方库来解析和处理JavaScript:如果需要完整地执行和处理JavaScript代码,并获取其结果,可以使用第三方库来解析和执行JavaScript代码。例如,可以使用V8引擎提供的PHP扩展来执行JavaScript代码。这个方法比较复杂,需要额外的准备和设置,但是可以获取到完整的JavaScript处理后的结果。

    “`php
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    // 使用V8引擎执行JavaScript代码
    $v8 = new V8Js();
    $result = $v8->executeString($response);
    “`

    4. 使用浏览器自动化工具:如果需要模拟完整的浏览器环境,并且执行JavaScript代码,可以使用浏览器自动化工具,如Selenium或Puppeteer。这些工具可以模拟用户的操作,加载并执行JavaScript代码,并获取结果。

    “`php
    use Facebook\WebDriver\Remote\DesiredCapabilities;
    use Facebook\WebDriver\Remote\RemoteWebDriver;

    $desiredCapabilities = DesiredCapabilities::chrome();
    $driver = RemoteWebDriver::create(‘http://localhost:4444/wd/hub’, $desiredCapabilities);

    $driver->get($url);

    // 获取网页内容,包含JavaScript执行后的结果
    $response = $driver->getPageSource();

    $driver->quit();
    “`

    无论选择哪种方法,都需要根据具体的需求和情况来选择合适的方法来处理返回的大量JavaScript内容。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部