개발환경과 배포환경 차이

21.03.17 21:33 작성 조회수 38

0

삭제된 글입니다

답변 9

·

답변을 작성해보세요.

0

JJARLIT님의 프로필

JJARLIT

질문자

2021.03.17

강의 중에 아이피 바꾸는걸 이용하면 될까요?

0

에러가 뜨는데 인스타그램이 해당 아이피를 차단한 것 같습니다. 이 경우 아이피를 바꾸거나 하지않으면 방법이없습니다.

0

JJARLIT님의 프로필

JJARLIT

질문자

2021.03.17

어??? 강사님???!

똑같은 url인데 다르게 나옵니다!

로컬에서는 이런식으로 모든 정보가 다나옵니다. (너무 길어서 일부만!)

 <div id="react-root"><section class="_9eogI E3X2T"><div></div><main class="SCxLW  o64aR " role="main"><div class="Kj7h1  yJx9G"><div class="ltEKP"><article class="QBXjJ M9sTE  L_LMM  JyscU Tgarh ePUX4" role="presentation" tabindex="-1"><header class="Ppjfr UE9AK  wdOqh"><div class="Jv7Aj mArmR   pZp3x"><div class="RR-M-  mrq0Z" aria-disabled="true" role="button" tabindex="-1"><canvas class="CfWVH" height="42" width="42" style="position: absolute; top: 

-5px; left: -5px; width: 42px; height: 42px;"></canvas><a class="_2dbep qNELH kIKUG" href="/soo_ni_1004/" tabindex="0" style="width: 32px; height: 32px;"><img alt="soo_ni_1004님의 프로필 사진" class="_6q-tv" crossorigin="anonymous" data-testid="user-avatar" draggable="false" src="https://scontent-gmp1-1.cdninstagram.com/v/t51.2885-19/s150x150/131974827_154910592667620_2513423827527329920_n.jpg?tp=1&amp;_nc_ht=scontent-gmp1-1.cdninstagram.com&amp;_nc_ohc=EnVuJls4Ic4AX9uXvlp&amp;oh=64ef675e3f5e999ae8dd53a57767bc86&amp;oe=607CFC4A"></a></div></div><div class="o-MQd z8cbW "><div class="PQo_0 RqtMr"><div class="e1e1d"><span class="Jv7Aj mArmR MqpiF  "><a class="sqdOP yWX7d     _8A5w5   

ZIAjV " href="/soo_ni_1004/" tabindex="0">soo_ni_1004</a>

운영에서는 이런식으로 나옵니다.(전체)

<div class="root -cx-PRIVATE-Page__root -cx-PRIVATE-Page__root__">

                    <div class="page -cx-PRIVATE-Page__body -cx-PRIVATE-Page__body__">

                                <header class="top-bar top-bar-new -cx-PRIVATE-NavBar__root -cx-PRIVATE-NavBar__root__">

    <div class="top-bar-wrapper -cx-PRIVATE-NavBar__wrapper -cx-PRIVATE-NavBar__wrapper__">

        <div class="logo -cx-PRIVATE-NavBar__logo -cx-PRIVATE-NavBar__logo__"><a href="/">Instagram</a></div>

        <div class="top-bar-left -cx-PRIVATE-NavBar__topBarLeft -cx-PRIVATE-NavBar__topBarLeft__">

            <ul class="top-bar-actions">

                <li>

                    <a class="top-bar-home" href="/" label="Home"><i></i></a>

                </li>

            </ul>

        </div>

            <div class="top-bar-right account-state" id="top_bar_right">

                <ul class="top-bar-actions -cx-PRIVATE-NavBar__topBarActions -cx-PRIVATE-NavBar__topBarActions__">

                      <li id="link_profile" class="link-signin -cx-PRIVATE-NavBar__signIn -cx-PRIVATE-NavBar__signIn__">

                          <a href="/accounts/login/" class="loginLink">

                              <i></i>

                              <strong class="-cx-PRIVATE-NavBar__signInText -cx-PRIVATE-NavBar__signInText__">Log in</strong>

                          </a>

                      </li>

                </ul>

            </div>

    </div>

</header> <!-- .top-bar -->

                        <div class="main -cx-PRIVATE-Page__main -cx-PRIVATE-Page__main__">

    <div class="error-container -cx-PRIVATE-ErrorPage__errorContainer -cx-PRIVATE-ErrorPage__errorContainer__">

        <h2>Error</h2>

        <p>Please wait a few minutes before you try again.</p>

    </div>

                        </div> <!-- .main -->

                    </div> <!-- .page -->

                    <footer class="page-footer -cx-PRIVATE-Footer__root -cx-PRIVATE-Footer__root__" role="contentinfo">

                        <div class="wrapper -cx-PRIVATE-Footer__wrapper -cx-PRIVATE-Footer__wrapper__">

                            <nav class="-cx-PRIVATE-Footer__nav -cx-PRIVATE-Footer__nav__">

                                <ul class="-cx-PRIVATE-Footer__navItems -cx-PRIVATE-Footer__navItems__">

                                    <li><a href="/about/us/">About us</a></li>

                                    <li><a href="https://help.instagram.com/">Support</a></li>

                                    <li><a href="https://about.instagram.com/blog/">Press</a></li>

                                    <li><a href="/developer/">API</a></li>

                                    <li><a href="https://about.instagram.com/about-us/careers">Jobs</a></li>

                                    <li><a href="/legal/privacy/">Privacy</a></li>

                                    <li><a href="/legal/terms/">

                                          Terms

                                    </a></li>

                                </ul>

                            </nav>

                            <p class="copyright -cx-PRIVATE-Footer__copyright -cx-PRIVATE-Footer__copyright__">© 2021 Instagram</p>

                        </div>

                    </footer>

                <div id="reactModalMountPoint"></div>

            </div> <!-- .root -->

        <script type="text/javascript">

(function(){

  function normalizeError(err) {

    var errorInfo = err.error || {};

    var getConfigProp = function(propName, defaultValueIfNotTruthy) {

      var propValue = window._sharedData && window._sharedData[propName];

      return propValue ? propValue : defaultValueIfNotTruthy;

    };

    var windowUrl = window.location.href;

    var errUrl = err.url || windowUrl;

    return {

      line: err.line || errorInfo.message || 0,

      column: err.column || 0,

      name: 'InitError',

      message: err.message || errorInfo.message || '',

      script: errorInfo.script || '',

      stack: errorInfo.stackTrace || errorInfo.stack || '',

      timestamp: Date.now(),

      ref: windowUrl.indexOf('direct') >= 0 ? 'direct' : windowUrl,

      deployment_stage: getConfigProp('deployment_stage', ''),

      frontend_env: getConfigProp('frontend_env', 'prod'),

      rollout_hash: getConfigProp('rollout_hash', ''),

      is_prerelease: window.__PRERELEASE__ || false,

      bundle_variant: getConfigProp('bundle_variant', null),

      request_url: errUrl.indexOf('direct') >= 0 ? 'direct' : errUrl,

      response_status_code: errorInfo.statusCode || 0

    }

  }

  window.addEventListener('load', function(){

    if (window.__bufferedErrors && window.__bufferedErrors.length) {

      if (window.caches && window.caches.keys && window.caches.delete) {

        window.caches.keys().then(function(keys) {

          keys.forEach(function(key) {

            window.caches.delete(key)

          })

        })

      }

      window.__bufferedErrors.map(function(error) {

        return normalizeError(error)

      }).forEach(function(normalizedError) {

        var request = new XMLHttpRequest();

        request.open('POST', '/client_error/', true);

        request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');

        request.send(JSON.stringify(normalizedError));

      })

    }

  })

}());

</script>

0

page.evaluate 내부는 브라우저에서만 찍힙니다. return으로 바깥으로 꺼낸 후 콘솔 찍어야합니다.

0

JJARLIT님의 프로필

JJARLIT

질문자

2021.03.17

이런식으로 말씀이세요 ??

콘솔이 안찍힙니다!

그리고 좋아요 한 사람을 긁어와야되는데 스크린샷으로도 가능한가요??

스크린샷은 그냥 이미지를 가져오는걸로 알고있어요

await page.goto(articleURL); //게시물 id 동적으로 받음
      await page.evaluate(() => {
        console.log(document.body.innerHTML);
      });
      if (await page.$("a:nth-child(1) > button")) {

0

안 된다고 생각하는 곳에서 document.body.innerHTML을 찍어서 화면이 어떻게 렌더링되나 보는 것도 좋습니다. 또는 리눅스 명령어에 익숙하시면 퍼펫티어로 스크린샷을 찍어서 파일을 보내도 되고요.

0

JJARLIT님의 프로필

JJARLIT

질문자

2021.03.17

네 로컬에서는 headless:true로 진행해도 문제가 없었습니다. 

page.goto가 안먹는거 같은데 다른 방법이 있을까요!?

0

답변 댓글로 다시면 알림이 안 올 수 있습니다. 답변으로 달아주세요. 로컬에서 헤들리스(화면 없음)로 할 때도 문제가 없나요? 이게 유명 사이트는 aws에서 크롤링하면 블로킹하는 사이트들이 많습니다.

0

좋아요 개수쪽이 안 뜨는건가요?

evaluate하기 정에

await page.waitForSelector(선택자)로 화면에 그 선택자가 표시되었음을 보장받고 나서 이밸류에이트하는 것이 좋습니다.

JJARLIT님의 프로필

JJARLIT

질문자

2021.03.17

네 좋아요 부분이 에러가 납니다.

그런데 if else 분기 처리하기 전에 

await page.waitForSelector("a:nth-child(1) > button")을 추가 했는데 타임아웃이 나네요

페이지가 안열린거 같습니다. 어째서 개발환경과 다를까요...ㅠㅠ?

await page.goto(articleURL); //게시물 id 동적으로 받음
      await page.waitForSelector("a:nth-child(1) > button");
      if (await page.$("a:nth-child(1) > button")) {