나는 그 질문에 관련된 많은 답변을 보았습니다. 그러나 극복 할 수없는 약간의 차이점이 있거나 내가 보여준 프로세스를 반복 할 수 없었습니다.DOM 구조, 속성 이름/값을 기준으로 요소 가져 오기
CURL을 사용하여 Google+ 비즈니스 페이지에서 HTML을 가져 와서 HTML을 반복하고 리뷰 한 HTML을 비즈니스가 아닌 Google + 웹 페이지에 표시하기 위해 검토합니다.
모든 리뷰 공유
이 부모 DIV 구조 : 따라서<div class="ZWa nAa" guidedhelpid="userreviews"> .....
내가 찾아 속성으로 각 사업부의 사업부 및 innerHTML을 잡는 기반으로 foreach 루프를 수행하려고 : guidehelpid = "userreviews"
CURL을 통해 HTML을 성공적으로 가져 왔으며 "a"와 같은 표준 태그 이름을 타겟팅하거나 ID가있는 경우 구문 분석 할 수 있지만 속성 이름을 찾을 때 PHP 기본 구문 분석기를 사용하여 HTML을 반복하는 것은 문제가 있습니다. :
어떻게이 성공적인 코드를 아래의 코드로 받아 들여 두 번째 코드에 표시된 것과 같이 의도 한대로 작동시킬 수 있습니까?
작업 CODE
$url = "https://plus.google.com/+Mcgowansac/about";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
$DOM = new DOMDocument;
@$DOM->loadHTML($output);
foreach($DOM->getElementsByTagName('a') as $link) {
# Show the <a href>
echo $link->getAttribute('href');
echo "<br />";}
이론적으로 NEEDED CODE (도착, 에코는 모두 "A"$ 출력의 태그입니다 검색해,) :은 (HTML에서 사용자 지정 특성에 의해 모든 검토를 찾아 그들을 에코)
$url = "https://plus.google.com/+Mcgowansac/about";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
$DOM = new DOMDocument;
@$DOM->loadHTML($output);
foreach($DOM->getElementsByTagName('div[guidehelpid=userreviews]') as $review) {
echo $review;
echo "<br />"; }
이 문제를 해결하면 도움이 될 것입니다. 내가 그것을없이 이것을 달성 할 수 있다면 "simple_html_dom"을 사용하지 않는 것을 선호한다.
보다는 당신 getElementsByTagName ('DIV [guidehelpid = userreviews]') 당신은 단지 하나의 큰 배열에있는 모든 div의 스틱과 (자신의 솔루션을 롤?)들을 반복 할 수 없습니다 - 또는 수 거기에 다양한 XQUERY 형식 클래스 중 하나를 사용하십시오 (의사 코드가 올바르게 수행하려고하는 것입니까?) – splig
페이지 응답의 모든 DIV를 배열에 집어 넣은 다음 배열을 반복하면 스크립트로드가 크게 증가하는 것처럼 보입니다 . 어쩌면 메신저 잘못하지만 정말 비효율적 인 것 같습니다. 나는 그것을 시도 할 것이고 그것이 어떻게 작동하는지 볼 것이다. – DMSJax
예, 서버 CPU/서버로드가 많이 추가 될 것 같습니다. 최근에 보지 않았지만 네이티브 (예 : 컴파일 된 C) XQUERY 라이브러리가 있으면 멋지고 빠를 것입니다. 효율적이고 정확한 쿼리를 수행 할 수 있습니다. – splig