2012-01-04 2 views
1

가능한 중복 :
How to parse and process HTML with PHP?PHP를 사용하여 HTML에서 특정 내용을 가져 오는 방법은 무엇입니까?

나는 주어진 라이브 온라인 HTML 페이지에서 특정 콘텐츠를 당기에 대해 어떻게 가야합니까? 예를 들어

: http://www.gumtree.com/p/for-sale/ovation-semi-acoustic-guitar/93991967 나는 텍스트 설명, 메인 이미지에 대한 경로 만 가격을 검색 할

. 그래서 기본적으로, HTML 페이지 내에 특정 ID 또는 클래스가있는 특정 div 안에있는 내용을 검색하려고합니다.

사이비 코드는

$page = load_html_contents('http://www.gumtr..'); 
$price = getPrice($page); 
$description = getDescription($page); 
$title = getTitle($page); 

내가 그 문제에 대해 다른 곳 출처 : 인크루트 콘텐츠를 훔칠 의도하지 않거나 유의하시기 바랍니다, 난 그냥 예를 제공하고 있습니다.

+0

약관이 금지. –

+0

나는 껌 나무에서 어떤 내용을 훔치려는 의도가 아니며 단지 예일뿐입니다. – emkay

+0

http://www.php.net/manual/en/book.dom.php – clyfe

답변

1

robotrobert 추천 튜토리얼 Easy web scraping with PHP 내가 그것을 여러 의견을 한 시작하는 것이 좋다. 더 나은 성능을 위해 curl을 사용하십시오. 다른 것들 중에는 HTTP 헤더, SSL, 쿠키, 프록시 등을 처리합니다. 쿠키는주의를 기울여야하는 항목입니다.

나는 방금 HTML Parsing and Screen Scraping with the Simple HTML DOM Library을 찾았습니다. 더 진보적이며, DOM 파서를 통한 페이지 파싱을 촉진하고 속도를 높입니다 (대신 정규 표현식 - 마스터 및 리소스 소비가 거의 없음). 이 마지막 100 %를 추천합니다. 당신이 표 형식의 출력을 원하는 경우이 같은

2

뭔가 좋은 출발점이 될 것입니다

$raw=file_get_contents($url) or die('could not select'); 
$newlines=array("\t","\n","\r","\x20\x20","\0","\x0B","<br/>"); 
$content=str_replace($newlines, "", html_entity_decode($raw)); 
$start=strpos($content,'<some id> '); 
$end = strpos($content,'</ending id>'); 
$table = substr($content,$start,$end-$start); 
preg_match_all("|<tr(.*)</tr>|U",$table,$rows); 
foreach ($rows[0] as $row){ 
if ((strpos($row,'<th')===false)){ 
// array to vars 
preg_match_all("|<td(.*)</td>|U",$row,$cells); 
$var1= strip_tags($cells[0][0]); 
$var2= strip_tags($cells[0][1]); 

등 등 고무 나무에 대한

+0

file_get_contents는 말아 넣기로 바꿔야 할 수도 있습니다. 예를 들어 내 공유 호스팅 계정에서 file_get_contents를 사용하지 않도록 설정했지만 localhost에서 작동합니다. – ChelseaStats

관련 문제