프로그래밍/Php

유머 커뮤니티 크롤링/파싱 시 본문내용이 안나올때

소행성왕자 2020. 7. 29. 15:14

이슈

 

크롤링/파싱 시 본문내용이 안나오는 경우가 있습니다.

이는 js 에서 런타임때 자동으로 가져와서 curl 이나 다른 프로그램으로 html 소스 가져오면

아무것도 없게 나옵니다.

 

예를들면

aagag.com/issue/?idx=730117

위와 같은 사이트에서 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

 

alwex/php-casperjs

simple PHP wrapper for CasperJS. Contribute to alwex/php-casperjs development by creating an account on GitHub.

github.com