.
이 방법은 상당히 자명합니다.
.
run $ php composer.phar 설치 라이브러리를 다운로드하고 공급 업체/autoload.php autoloader 파일을 생성합니다.
클래스 사용
Symfony의 Domcrawler 구성 요소 설치 똑바로. PHP 용 종속성 관리 도구 인 Composer를 사용할 수 있습니다. 프로젝트 디렉토리에서 다음 명령을 실행하십시오. Composer는 Symfony/Dom-Crawler가 필요합니다. 이것은 종속성과 함께 Domcrawler 구성 요소를 다운로드하여 설치합니다.
아래는 클래스 속성과 그 역할의 목록입니다.
<__> URL을 인수로 받아들이는 __Construct Magic 메소드를 만듭니다. <span><span><?php
</span></span><span><span>class ZipImages {
</span></span><span> <span>private $folder;
</span></span><span> <span>private $url;
</span></span><span> <span>private $html;
</span></span><span> <span>private $fileName;
</span></span><span> <span>private $status;</span></span>
<span>public function __construct($url) {
</span> <span>$this->url = $url;
</span> <span>$this->html = file_get_contents($this->url);
</span> <span>$this->setFolder();
</span><span>}</span>
<span>public function setFolder($folder="image") {
</span> <span>// if folder doesn't exist, attempt to create one and store the folder name in property $folder
</span> <span>if(!file_exists($folder)) {
</span> <span>mkdir($folder);
</span> <span>}
</span> <span>$this->folder = $folder;
</span><span>}</span>
<span>public function setFileName($name = "zipImages") {
</span> <span>$this->fileName = $name;
</span><span>}</span>
<span>public function domCrawler() {
</span> <span>//instantiate the symfony DomCrawler Component
</span> <span>$crawler = new Crawler($this->html);
</span> <span>// create an array of all scrapped image links
</span> <span>$result = $crawler
</span> <span>->filterXpath('//img')
</span> <span>->extract(array('src'));
</span>
<span>// download and save the image to the folder
</span> <span>foreach ($result as $image) {
</span> <span>$path = $this->folder."/".basename($image);
</span> <span>$file = file_get_contents($image);
</span> <span>$insert = file_put_contents($path, $file);
</span> <span>if (!$insert) {
</span> <span>throw new <span>\Exception</span>('Failed to write image');
</span> <span>}
</span> <span>}
</span><span>}</span>
<span>public function createZip() {
</span> <span>$folderFiles = scandir($this->folder);
</span> <span>if (!$folderFiles) {
</span> <span>throw new <span>\Exception</span>('Failed to scan folder');
</span> <span>}
</span> <span>$fileArray = array();
</span> <span>foreach($folderFiles as $file){
</span> <span>if (($file != ".") && ($file != "..")) {
</span> <span>$fileArray[] = $this->folder."/".$file;
</span> <span>}
</span> <span>}
</span>
<span>if (create_zip($fileArray, $this->fileName.'.zip')) {
</span> <span>$this->status = <span><span><<<HTML</span>
</span></span><span>File successfully archived. <a href="<span><span>$this->fileName</span>.zip">Download it now</a>
</span></span><span><span>HTML<span>;</span></span>
</span> <span>} else {
</span> <span>$this->status = "An error occurred";
</span> <span>}
</span><span>}</span>
<span>public function deleteCreatedFolder() {
</span> <span>$dp = opendir($this->folder) or die ('ERROR: Cannot open directory');
</span> <span>while ($file = readdir($dp)) {
</span> <span>if ($file != '.' && $file != '..') {
</span> <span>if (is_file("<span><span>$this->folder</span>/<span>$file</span>"</span>)) {
</span> <span>unlink("<span><span>$this->folder</span>/<span>$file</span>"</span>);
</span> <span>}
</span> <span>}
</span> <span>}
</span> <span>rmdir($this->folder) or die ('could not delete folder');
</span><span>}</span>
Symfony의 Domcrawler 구성 요소를 설치하려면 어떻게합니까?
위 내용은 Symfony의 Domcrawler와 함께 이미지 스크래핑의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!