[英]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.