簡體   English   中英

如何使用 php 簡單 dom 刮取無效的 html?

[英]How can i scrape invalid html using php simple dom?

我正在嘗試使用 phpsimpledom 抓取網頁。

$html = '<div class="namepageheader"> 
            <div class="u">Name: <a href="someurl">Noor Shaad</a>
            <div class="u">Age: </div>
        </div> ' 
$name=$html->find('div[class="u"]', 0)->innertext;
$age=$html->find('div[class="u"]', 1)->innertext;

我盡力從每個class="u"獲取文本,但它沒有工作,因為第一個標簽<div class="u">上缺少結束標簽</div> > 。 任何人都可以幫我解決這個問題......

您可以在標簽應該關閉的位置附近找到一個元素,然后通過替換它來標准化 html。 例如,您可以將</a>標簽替換為</a></div>

str_replace('</a>','</a></div>',$html)

或者如果關閉的</a>標簽太多,請將</a><div class="u">替換為</a></div><div class="u">

str_replace('</a><div class="u">','</a></div><div class="u">',$html)

可能還有另一個問題。 標簽之間有間隙,替換無法正常工作。 要解決這個問題,可以先刪除標簽之間的空格,然后再替換。

$html = '<div class="namepageheader"> 
            <div class="u">Name: <a href="someurl">Noor Shaad</a>
            <div class="u">Age: </div>
        </div> ' ;
$html = preg_replace('~>\\s+<~m', '><', $html);
str_replace('</a><div class="u">','</a></div><div class="u">',$html);
$name=$html->find('div[class="u"]', 0)->innertext;
$age=$html->find('div[class="u"]', 1)->innertext;

暫無
暫無

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

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