簡體   English   中英

刮痧<script> tag with certain keyword using Simple HTML Dom Parser

[英]Scraping <script> tag with certain keyword using Simple HTML Dom Parser

我正在嘗試使用 Simple HTML Dom 從一組網頁中抓取<script>標記。 起初,我通過提供我需要的標簽的數字順序來抓取它:

$script = $html->find('script', 17); //The tag I need is typically the 18th <script> tag on the page

我開始意識到順序因頁面而異(這不是一種可擴展的方式,因為它可以隨時更改)。 我怎樣才能在我需要的標簽內搜索關鍵字,然后拉回完整的標簽? 例如,我需要的標簽總是包含字符串“PRODUCT_METADATA”。

提前感謝您的任何想法!

我最終使用下面的代碼來搜索我的關鍵字的所有腳本標簽:

$scripts = $html->find('script');
    foreach($scripts as $s) {
        if(strpos($s->innertext, 'PRODUCT_METADATA') !== false) {
            $script = $s;
        }
    }

它有效,但對我來說,我試圖找到隱藏在腳本標簽中的 csrf 令牌,起初無法讓它工作,所有出來的都是NULL

我的解決辦法是use explode()在腳本S和非常重要的記憶->innertext否則你不能得到一個string

我很幸運,令牌是雙引號的,所以很容易得到它。

我的最終代碼如下所示:

$scripts = $html->find('script');
foreach($scripts as $s) {
    if (strpos($s->innertext, 'csrf_token') !== false) {
        $script_array = explode('"', $s->innertext);
        $token = $script_array[1];
        break;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM