이슈
크롤링/파싱 시 본문내용이 안나오는 경우가 있습니다.
이는 js 에서 런타임때 자동으로 가져와서 curl 이나 다른 프로그램으로 html 소스 가져오면
아무것도 없게 나옵니다.
예를들면
위와 같은 사이트에서 f12로 본문내용을 보면 아래와 같은 값을 확인할수 있습니다.
<div id="vContent"><div class="stag img" q="Di12l" style="width: 836px; height: 1114px;">
<img src="https://i.aagag.com/o/Di12l.jpg">
</div>
하지만 curl 또는 소스보기 하면 아래와 같이 아무값도 안나옵니다.
<div id="vContent">
</div>
해결
php 래퍼로 감싼다음 casper.js 로 해결하면 됩니다.
mac 에서 설치
.phantomjs 설치
brew tap homebrew/cask
brew cask install phantomjs
npm install phantomjs
npm install casperjs
composer require phpcasperjs/phpcasperjs
<?php
require __DIR__.'/../vendor/autoload.php';
use Browser\Casper;
$casper = new Casper();
$casper->setOptions(
[
'ignore-ssl-errors' => 'yes',
]
);
$casper->start('https://~~~~~');
$casper->run();
$page = implode("\n", $casper->getOutput());
preg_match("!!is", $page, $match);
echo '<pre>';
print_r($match);
https://github.com/alwex/php-casperjs
'프로그래밍 > Php' 카테고리의 다른 글
그누보드 > 이윰빌더 og:image 안나올때 (0) | 2020.07.30 |
---|---|
한번 포스팅으로 워드프레스 / 그누보드 / XE / 티스토리 에 동시에 배포 (0) | 2020.07.30 |
Template Method pattern (템플릿 메소드 패턴) (0) | 2020.06.01 |
고차원 함수 array_map 과 array_reduce 를 이용한 배열을 문자열로 변환 (0) | 2020.05.28 |
array_walk 를 이용한 배열을 쿼리스트링으로 변경 (0) | 2020.05.28 |