우리는 PHP로 컨텐츠 파서를 작성하고 있습니다. PHP에서 웹페이지 구문 분석 및 처리: 최상의 라이브러리 선택 HTML 페이지 구문 분석 방법

PHP 콘텐츠 구문 분석 페이지

이 기사는 구문 분석, 특히 웹 사이트 구문 분석, 페이지 구문 분석, 웹 구문 분석, 웹 사이트 html 콘텐츠 구문 분석에 전념합니다.

다양한 웹 서비스를 개발하는 과정에서 우리는 다양한 종류의 정보를 대량으로 빠르게 얻어야 하는 작업에 자주 직면하게 됩니다. 이것은 주로 잡아서 정보를 훔치는 것과 관련이 있습니다. 요점은 정보가 접근 가능하고 공개되어 있다는 것입니다. 구문 분석의 특징은 웹 사이트 페이지에서 데이터와 콘텐츠를 빠르고 자동으로 수집한다는 것입니다.

요즘 웹 환경에서는 스크레이핑, 즉 사람들에게 최소한 어느 정도의 가치와 관련성이 포함된 사이트를 스크레이핑하는 것이 매우 인기가 있습니다. 특히 가치가 있는 것은 사진, 디렉토리 데이터베이스 등을 포함하는 제품 카탈로그이며, 경쟁사에게 유용할 수 있는 것입니다.

필요한 정보를 html로 분석하고, 우리 사이트의 여러 페이지에서 모든 링크를 가져오도록 합시다.

먼저 사이트 콘텐츠를 HTML 형식으로 가져와야 합니다. 이를 위해서는 필요한 페이지의 주소만 알면 됩니다.

웹사이트 페이지에서 콘텐츠를 가져오는 두 가지 주요 방법을 보여드리고 싶습니다.

우선, 필요한 페이지 주소가 포함된 배열을 준비하겠습니다.

//우리 사이트에 대한 링크 3개: $urls = array("http://hello-site..ru/games/");

옵션 1 - PHP 함수 file_get_contents. 이 함수는 링크로 구문 분석할 html 문자열을 반환합니다.

//각 링크를 함수에 넣습니다. file_get_contents foreach($urls as $urlsItem)( $out .= file_get_contents($urlsItem); //그리고 각 페이지의 내용을 줄에 추가합니다 ) echo $out; //여기에 세 페이지 모두의 내용이 있습니다.

옵션 2 - CURL. PHP에서 지원되고 POST 요청부터 FTP 작업까지 다양한 설정이 포함된 라이브러리입니다. 사이트 콘텐츠를 제공하는 컬 라이브러리에 대한 표준 호출을 고려해 보겠습니다.

foreach($urls as $urlsItem)( //루프의 각 링크 전달 $output = cur_init(); //curl 연결 cur_setopt($output, CURLOPT_URL, $urlsItem); //페이지 주소 보내기 cur_setopt($output, CURLOPT_RETURNTRANSFER, 1); 컬_setopt($output, CURLOPT_HEADER, 0); $out .= 컬_exec($output); // html 콘텐츠를 줄에 넣습니다. 컬_close($output); //연결을 닫습니다. //여기에 세 페이지 모두의 내용이 있습니다.

이제 $out 라인에는 세 페이지의 내용이 모두 포함됩니다. 이제 문자열을 구문 분석하는 작업으로 직접 이동해 보겠습니다.

다시 한 번 문제 해결을 위한 3가지 옵션을 보여주고 싶습니다. 내장 DOMDocument 라이브러리와 SimpleHTMLDOM 라이브러리를 사용하는 PHP의 "네이티브" 방법입니다.

1. PHP 함수 폭발. 이 함수는 검색된 문자 또는 문자열의 일부를 찾아 전체 문자열을 배열 요소로 나눕니다.

반복합니다. a 태그의 모든 href 속성 값을 가져와야 합니다. 이를 위해 일반 문자열을 일부 부분\세그먼트로 나눕니다.

// 폭발 $hrefs = 폭발("

배열을 인쇄하면 다음과 같이 보일 것입니다.

배열( => / => /hello => /timer/ => /leftmenu/ => /faq/ => /blog/ => /web-notes/ => /ordersite/ => /games)

2. 내장 DOMDocument 라이브러리. 우리는 대략 다음과 같이 수업을 진행합니다.

//domelement $dom = 새로운 DOMDocument; //객체 생성 $dom->loadHTML($out); //컨텐츠 로드 $node = $dom->getElementsByTagName("a"); //모든 태그를 가져옵니다 for ($i = 0; $i< $node->길이; $i++) ( $hrefText = $node->item($i)->getAttribute("href"); //태그에서 href 속성 가져오기) foreach($hrefText as $hrefTextItem)( //링크 제거 빈 속성 href if($hrefTextItem!="")( $clearHrefs=$hrefTextItem; ) ) $clearHrefs = array_unique($clearHrefs); //동일한 링크 제거 print_r($clearHrefs); // 결국 우리는 3페이지의 모든 링크가 포함된 배열을 갖게 되었습니다.

이 코드의 결과는 분해 기능을 사용한 것과 정확히 동일합니다.

3. SimpleHTMLDOM 라이브러리. 파일에서 포함되어야 합니다. 작업은 DOMDocument와 거의 유사합니다. 수업과 함께 작업하기:

//simplehtml include("simple_html_dom.php"); //SimpleHTMLDOM 클래스에 파일 포함 $html = new simple_html_dom(); //객체 생성 $html->load($out); //컨텐츠 배치 $collection = $html->find("a"); //모든 태그 수집 a foreach($collection as $collectionItem) ( $articles = $collectionItem->attr; //모든 속성의 배열, href 포함) foreach($articles as $articlesItem)( $hrefText = $articlesItem[ " href"]; //href 키가 있는 하위 배열의 값을 배열로 수집) foreach($hrefText as $hrefTextItem)( //빈 href 속성이 있는 링크 제거 if($hrefTextItem!="" )( $clearHrefs=$hrefTextItem; ) ) $clearHrefs = array_unique($clearHrefs); //동일한 링크 제거 print_r($clearHrefs); // 결국 우리는 3페이지의 모든 링크가 포함된 배열을 갖게 되었습니다.

반복합니다. 배열의 결과는 위의 두 결과와 정확히 동일합니다.

이제 사이트의 세 페이지에서 수집된 모든 링크가 포함된 배열이 있으면 링크를 올바른 방향으로 보낼 수 있습니다. 이는 모두 작업과 상상력에 따라 다릅니다. 이러한 기능을 사용하면 다양한 유형의 정보, 사진, 텍스트, 로그 등의 대량의 데이터를 구문 분석할 수 있습니다. 다른 사람의 정보가 귀하의 손에 있으므로 원하는 대로 처리하되 불가능하더라도 자신을 방어하십시오)

웹 개발자는 제3자 사이트에서 필요한 정보를 구문 분석하고 처리하는 작업을 여러 가지 이유로 자주 직면하게 됩니다. 이러한 방식으로 프로젝트를 콘텐츠로 채우고 일부 정보를 동적으로 로드하는 등의 작업을 수행할 수 있습니다.

이러한 경우 프로그래머는 수십 개의 라이브러리 중 어떤 라이브러리를 선택할 것인가라는 질문에 직면하게 됩니다. 이 기사에서는 가장 인기 있는 옵션을 고려하고 가장 좋은 옵션을 선택하려고 노력했습니다.

정규 표현식

"일반 것"이 가장 먼저 떠오르더라도 실제 프로젝트에 사용해서는 안됩니다.

예, 정규식은 간단한 작업에 가장 적합하지만 크고 복잡한 HTML 코드 조각을 구문 분석해야 할 때 사용이 훨씬 더 어려워집니다. 또한 특정 패턴과 항상 일치하지 않고 일반적으로 구문 오류가 포함될 수 있습니다. .

코드를 약간만 변경할 때마다 정규식을 "마무리"하는 대신 아래 도구를 사용하는 것이 좋습니다. 이 도구는 더 간단하고 편리하며 안정적입니다.

XPath와 DOM

HTMLSQL

PHP를 사용하지 않는다면 다른 프로그래밍 언어에 대한 유사한 도구 목록을 확인해 보세요.

최근에 회사에 다니고 있어요 LLC "라디오 시티 사할린"정보 및 엔터테인먼트 포털 "Sitisakh"의 개발자 및 언론인 팀에서. 특히 축구 팬을 위해 포털은 축구 세계 소식, 순위 및 FC 사할린 팀 선수 목록이 포함된 "스포츠" 섹션을 지원합니다.

포털은 현재 재설계 중이어서 '스포츠' 섹션을 담당하도록 배정되었습니다. 팀 내 주요 업무는 새로운 디자인 레이아웃을 만드는 것입니다. 때때로 우리는 메인 프로그래머의 이미 어려운 작업을 용이하게 하기 위해 부차적인 문제를 해결해야 합니다. 오늘은 Microparser에 대해 이야기하겠습니다.

이전에는 포털의 축구 토너먼트 테이블이 콘텐츠 관리자에 의해 수동으로 작성되었습니다. 당사 포털보다 Championship.com에 경기 결과가 더 빨리 나타나는 경우가 있습니다. 이제 우리는 마침내 테이블 업데이트를 자동으로 만들기로 결정했습니다. Championship.com은 표시되는 토너먼트 테이블을 얻기 위한 API(적어도 일부 공개 API)를 제공하지 않기 때문에 유일한 옵션은 구문 분석하는 것입니다.

마이크로파서를 사용하는 방법

"마이크로파서"는 단 하나의 함수(parse_site(array $sites, array $defaults = array()))로 구성됩니다. 첫 번째 인수는 구문 분석해야 하는 사이트(또는 한 사이트의 페이지) 배열이고, 두 번째 인수는 기본 설정 배열입니다.

$sites 배열의 형식은 다음과 같습니다.

Array("zona_vostok" => array("url" => "http://www.championat.com/football/_russia2d/589/table/all.html", "xpath" => "some/x/path" , //선택 사항 "xsl" => "absolute/path/to/xsl", //선택 사항), "stackoverflow" => array("url" => "http://stackoverflow.com", "xpath" = > "some/x/path", "transform" => false //선택 사항));

url을 제외한 모든 키는 선택사항입니다. XPath 표현식이 누락된 경우 url 키 값에 지정된 페이지가 전체적으로 처리됩니다. 원시 코드 처리가 필요한 경우에만 XSL 스타일 시트를 포함할 수도 있습니다.

"transform" => false 키에 주의하세요. $defaults 배열에 기본 XSL 스타일 시트가 포함되어 있지만 해당 페이지에 변환이 필요하지 않은 경우에 사용됩니다.

$defaults 배열은 $sites 배열에 설정이 복사되는 것을 방지합니다. 여기에는 xpath와 xsl의 두 가지 키만 포함될 수 있습니다. 다른 키는 무시됩니다.

요약

내가 작성한 파서는 두 개의 매개변수(개인 및 일반 설정용)가 있는 하나의 함수로 구성되어 있으며, 전체 페이지 또는 페이지의 개별 부분을 로드할 수 있으며 원하는 경우 XSL 스타일 시트로 결과를 처리할 수도 있습니다.

처음에는 phpQuery나 Ganon과 같은 라이브러리를 사용하여 노드를 순회하고 싶었지만 신중하게 생각한 결과 추가 종속성을 끌 필요가 없다는 것을 깨달았습니다. 이미 존재하는 내장 도구를 사용할 수 있습니다.

실제 사례

2부 리그인 "East" 구역의 러시아 축구 선수권 대회 순위를 살펴보겠습니다.

토너먼트 테이블을 페이지에서 직접 "가져와야"하므로 XPath 표현식은 다음과 같습니다. //div[@id="section-statistics"]/table

소스 테이블에는 속성, 클래스, 인라인 스타일 등 많은 쓰레기가 포함되어 있습니다. 따라서 다음 내용이 포함된 XSL 스타일 시트를 사용하여 더 멋진 모양을 제공하겠습니다.

계략 승리 무승부 사상자 수 불알 안경
심지어 이상한

이제 완성된 토너먼트 테이블을 표시하는 코드를 작성해 보겠습니다.

$results = pars_site(array("zona_vostok" => array("url" => "http://www.championat.com/football/_russia2d/589/table/all.html", "xpath" => "xpath) " => "//div[@id="section-statistics"]/table", "xsl" => __DIR__."/football.xsl")); $results["zona_vostok"]; 인쇄

출력은 다음 HTML 코드입니다.

...
계략 승리 무승부 사상자 수 불알 안경
1 루크에너지 20 12 6 2 30-17 42
2 치타 20 12 5 3 28-14 41

"마이크로파서" 다운로드

Microparser를 사용하는 몇 가지 방법은 다음과 같습니다.

  1. Github의 포크: git clone https://github.com/franzose/microparser.git
  2. 아카이브를 다운로드하세요:

많은 분들이 궁금하신 점을 PHP에서 파서 만들기. 예를 들어, 웹사이트가 있고 그 웹사이트에서 콘텐츠를 가져와야 합니다. 이 글은 특별한 의미가 없기 때문에 오랫동안 쓰고 싶지 않았습니다. 에게 PHP로 파서를 만들어라, 이 언어를 알아야 합니다. 그리고 그를 아는 사람들은 그런 질문을 하지 않을 것이다. 하지만 이 기사에서는 일반적으로 파서가 생성되는 방법과 구체적으로 연구해야 할 사항에 대해 설명합니다.

그래서, 여기에 당신이 통과해야 할 사항의 목록이 있습니다. PHP에서 콘텐츠 파서를 생성합니다.:

  1. 페이지의 내용을 가져와서 문자열 변수에 씁니다. 가장 간단한 옵션은 기능입니다 file_get_contents(). 승인된 사용자만 콘텐츠를 사용할 수 있다면 모든 것이 좀 더 복잡해집니다. 여기서 우리는 인증 메커니즘이 무엇인지 살펴봐야 합니다. 다음으로 곱슬 곱슬하다, 인증 양식에 올바른 요청을 보내고 응답을 받은 다음 올바른 헤더(예: 수신된 세션 식별자)를 보내고 동일한 요청에서 필요한 페이지에 액세스합니다. 그러면 이 답변에서 마지막 페이지를 받게 됩니다.
  2. 페이지 구조를 연구하세요. 필요한 콘텐츠를 찾아서 어느 블록에 위치해 있는지 확인해야 합니다. 해당 블록이 고유하지 않은 경우 라인이 이를 만족한다면 이것이 필요한 것이라고 확실히 말할 수 있는 다른 공통 특성을 찾으십시오.
  3. 문자열 함수를 사용하여 다음에서 발견된 특성을 기반으로 소스 문자열에서 필요한 콘텐츠를 추출합니다. 2위가리키다.

아는 사람만이 이 모든 것을 이해하고 실천할 수 있다는 점에도 주목하겠습니다. PHP. 따라서 이제 막 공부를 시작하는 사람들에게는 다음과 같은 지식이 필요합니다.

  1. 문자열 함수.
  2. 도서관 곱슬 곱슬하다, 또는 그 유사품.
  3. 뛰어난 지식 HTML.

아직 전혀 모르시는 분들 PHP, 이 경우 파서는 아직 멀리 떨어져 있으므로 전체 데이터베이스를 연구해야 합니다. 이것이 당신에게 도움이 될 것입니다

사이트에 게시된 모든 기사 목록을 얻는 방법을 배우게 됩니다.

1단계. 준비

우선 라이브러리를 복사해야 합니다. 단순HTMLdom, 홈페이지에서 확인 가능

다운로드 아카이브에는 여러 파일이 포함되어 있지만 하나만 필요합니다. simple_html_dom.php. 다른 모든 파일은 예제 및 문서입니다.

2단계: 구문 분석 기본 사항

이 라이브러리는 사용하기 매우 쉽지만, 실제로 사용하기 전에 배워야 할 몇 가지 기본 사항이 있습니다.

$html = 새로운 simple_html_dom();
// 문자열에서 로드
$html->로드("

안녕하세요 월드!

");
// 파일 업로드
$html->load_file("http://net.tutsplus.com/");

로드하여 소스 객체를 생성할 수 있습니다. HTML문자열이나 파일에서. 다음을 지정하여 파일에서 로드할 수 있습니다. URL또는 로컬 파일 시스템에서.

참고: 방법 로드_파일() PHP 함수에 대한 작업 위임 file_get_contents. 만약에 allow_url_fopen값으로 설정되지 않음 진실당신의 파일에 php.ini, 이 방법으로 원격 파일을 열지 못할 수도 있습니다. 이 경우 CURL 라이브러리를 사용하여 원격 페이지를 로드한 다음 메서드를 사용하여 읽을 수 있습니다. 짐().

정보에 대한 접근

DOM 개체가 있으면 다음 메서드를 사용하여 작업을 시작할 수 있습니다. 찾다()그리고 컬렉션을 만드는 것입니다. 컬렉션은 선택기가 찾은 개체 그룹입니다. 구문은 jQuery와 매우 유사합니다.



안녕하세요 월드!


여기에 있었다.






이 HTML 예제에서는 두 번째 단락의 정보에 액세스하여 이를 변경한 다음 작업 결과를 인쇄하는 방법을 알아 보겠습니다.

1. # HTML 생성 및 로드
2. include("simple_html_dom.php");
3. $html = new simple_html_dom();
4. $html->로드(“

안녕하세요 월드!



“);
5. # 두 번째 단락을 나타내는 요소를 가져옵니다.
6. $element = $html->find("p");
7. # 수정
8. $element->innertext .= “ 그리고 우리는 "여기에 있습니다.";
9. # 출력!
10. echo $html->save();

2~4라인: 위에서 설명한 대로 문자열에서 HTML을 로드합니다.

6호선: 모든 태그 찾기

HTML에서는 배열로 반환합니다. 첫 번째 문단의 색인은 0이 되며, 후속 문단의 색인은 그에 따라 지정됩니다.

8호선: 단락 컬렉션(색인 1)의 두 번째 요소에 액세스하여 innertext 속성에 텍스트를 추가합니다. innertext 속성은 태그 사이의 내용을 나타내고, externaltext 속성은 태그를 포함하는 내용을 나타냅니다. externaltext 속성을 사용하여 태그를 완전히 바꿀 수 있습니다.

이제 한 줄을 추가하고 두 번째 단락의 태그 클래스를 수정해 보겠습니다.

$element->class = "클래스_이름";
echo $html->저장();

save 명령 이후의 최종 HTML은 다음과 같습니다.



안녕하세요 월드!


우리는 여기에 있고 우리는 여기에 머물고 있습니다.





기타 선택기

선택자의 몇 가지 다른 예. jQuery를 사용해 본 적이 있다면 모든 것이 익숙해 보일 것입니다.

# id="foo"로 발견된 첫 번째 요소를 얻습니다.
$single = $html->find("#foo", 0);
# "foo" 클래스의 모든 요소를 ​​가져옵니다.
$collection = $html->find(".foo");
# 페이지의 모든 링크 태그를 가져옵니다.
$collection = $html->find("a");
# H1 태그 내부에 있는 모든 링크 태그를 가져옵니다.
$collection = $html->find("h1 a");
# title="himom을 포함하는 모든 img 태그를 가져옵니다."!}
$collection = $html->find("img");

첫 번째 예에는 약간의 설명이 필요합니다. 모든 쿼리는 기본적으로 컬렉션을 반환합니다. 심지어 하나의 요소만 반환해야 하는 ID 쿼리도 마찬가지입니다. 그러나 두 번째 매개변수를 지정하면 "컬렉션의 첫 번째 요소만 반환"됩니다.

그것은 다음을 의미합니다 $싱글- 단일 요소이며, 하나의 멤버를 가진 요소의 배열이 아닙니다.

나머지 예는 매우 분명합니다.

선적 서류 비치

라이브러리에 대한 전체 문서는 에서 확인할 수 있습니다.

3단계: 실제 사례

실제 라이브러리를 시연하기 위해 net.tutsplus.com 사이트의 콘텐츠를 스크랩하고 사이트에 제시된 기사의 제목 및 설명 목록을 생성하는 스크립트를 작성하겠습니다....단순한 예입니다. 스크래핑은 웹 트릭이므로 리소스 소유자의 허가 없이 사용해서는 안 됩니다.

include("simple_html_dom.php");
$articles = 배열();
getArticles("http://net.tutsplus.com/page/76/");

라이브러리를 연결하고 함수를 호출하는 것부터 시작하겠습니다. 기사 가져오기구문 분석을 시작하려는 페이지를 나타냅니다.

또한 기사에 대한 모든 정보를 한 곳에서 더 쉽게 수집할 수 있도록 전역 배열을 선언할 것입니다. 분석을 시작하기 전에 Nettuts+ 웹사이트의 기사가 어떻게 설명되어 있는지 살펴보겠습니다.



...


제목




설명



소스코드에 대한 댓글을 포함한 사이트 게시물의 기본 형식입니다. 댓글이 왜 중요한가요? 파서에서는 노드로 계산됩니다.

4단계: 구문 분석 기능 시작

함수 getArticles($page) (
글로벌 $기사;
$html = 새로운 simple_html_dom();
$html->load_file($page);
// ... 더 나아가...
}

전역 배열을 선언하고 새 객체를 생성하는 것부터 시작합니다. simple_html_dom를 클릭한 다음 구문 분석을 위해 페이지를 로드합니다. 이 함수는 재귀적으로 호출되므로 페이지 URL을 매개변수로 설정합니다.

5단계. 필요한 정보 찾기

1. $items = $html->find("div");
2. foreach($items를 $post로) (
3. # 주석을 노드로 계산하는 것을 기억하세요
4. $articles = array($post->children(3)->outertext,
5. $post->children(6)->first_child()->outertext);
6. }

이것이 함수의 본질이다 기사 가져오기. 무슨 일이 일어나고 있는지 이해하려면 더 자세히 조사해야합니다.

1호선: 요소 배열 생성 - 태그 div프리뷰 수업과 함께. 이제 다음 항목에 저장된 기사 모음이 있습니다. $items.

4호선: $post이제 미리보기 클래스의 단일 div를 참조합니다. 원본 HTML을 보면 세 번째 하위 요소가 태그라는 것을 알 수 있습니다. H1, 기사 제목이 포함되어 있습니다. 우리는 그것을 취하고 그것을 적절하게 한다 $articles.

올바른 노드 인덱스를 결정할 때 0부터 시작하고 소스 코드 주석을 고려하는 것을 잊지 마십시오.

5호선: 여섯째 자손 $post- 이것

. 설명 텍스트가 필요하므로 다음을 사용합니다. 외부 텍스트- 설명에는 단락 태그가 포함됩니다. 기사 배열의 단일 항목은 다음과 같습니다.

$articles = “기사 제목”;
$articles = "이것은 내 기사 설명입니다."

6단계, 페이지 작업

첫 번째 단계는 다음 페이지를 찾는 방법을 결정하는 것입니다. Nettuts+ 사이트에서는 URL을 통해 페이지 번호를 추측하는 것이 매우 쉽지만 구문 분석 시 링크를 가져와야 합니다.

HTML을 보면 다음과 같은 내용을 볼 수 있습니다.

»

다음 페이지로의 링크이며 '클래스별로 쉽게 찾을 수 있습니다. 다음 게시물link'. 이제 이 정보를 사용할 수 있습니다.

If($next = $html->find("a", 0)) (
$URL = $next->href;
$html->clear();
설정 해제($html);
getArticles($URL);
}

첫 번째 줄에서 클래스에 대한 참조를 찾을 수 있는지 확인합니다. 다음 게시물link. 함수에서 두 번째 매개변수의 사용에 유의하세요. 찾다(). 이런 식으로 우리는 반환된 컬렉션의 첫 번째 요소(인덱스 0)를 가져오고 싶다는 것을 나타냅니다. $next컬렉션이 아닌 단일 요소를 포함합니다.

그런 다음 HREF 링크를 $URL 변수에 할당합니다. 다음으로 HTML 개체를 제거하기 때문에 이는 중요합니다. php5에서 메모리 누수를 방지하기 위해 현재 객체는 simple_html_dom다른 객체를 생성하려면 먼저 해당 객체를 지우고 설정 해제해야 합니다. 그렇지 않으면 사용 가능한 메모리가 모두 소모될 수 있습니다.

마지막으로 다음 페이지의 URL로 getArticles 함수를 호출합니다. 구문 분석할 페이지가 남아 있지 않으면 재귀가 중단됩니다.

7단계. 결과 출력

먼저 몇 가지 기본 스타일을 설치하겠습니다. 모든 것이 완전히 임의적입니다. 원하는 것을 설치할 수 있습니다.

#기본 (
여백:80px 자동;
너비:500px;
}
h1 (
글꼴:굵게 40px/38px helvetica, verdana, sans-serif;
여백:0;
}
h1a (
색상:#600;
텍스트 장식:없음;
}
피(
배경: #ECECEC;
글꼴:10px/14px 베르다나, 산세리프;
여백:8px 0 15px;
테두리: 1px #CCC 솔리드;
패딩: 15px;
}
.안건(
패딩:10px;
}

그런 다음 페이지에 작은 PHP 함수를 작성하여 이전에 저장된 정보를 표시합니다.

foreach($articles를 $item으로) (
에코 "

";
$ 항목을 에코;
$ 항목을 에코;
에코 "
";
}
?>

최종 결과는 첫 번째 호출에서 지정된 항목부터 시작하여 Nettuts+ 페이지의 모든 기사를 나열하는 단일 HTML 페이지입니다. 기사 가져오기().

8단계. 결론

많은 수의 페이지(예: 전체 사이트)에 대해 스크래핑을 시작하면 시간이 많이 걸릴 수 있습니다. 86페이지가 넘는 Nettuts+와 같은 사이트에서는 구문 분석 프로세스가 1분 이상 걸릴 수 있습니다.

이 단원에서는 HTML 구문 분석 주제를 소개합니다. 요소를 찾기 위해 xpath 선택기로 작업할 수 있는 다른 DOM 조작 기술이 있습니다. 이 튜토리얼에서 설명하는 라이브러리는 사용하기 쉽고 빠르게 시작하는 데 좋습니다. 사이트를 스크랩하기 전에 허가를 요청하는 것을 잊지 마세요.





질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: