Selenium получает код javascript вместо содержимого - PullRequest
0 голосов
/ 05 мая 2020

Привет, я пытаюсь получить данные для своего школьного проекта. Я использую селен и python. я могу загрузить и получить элемент «https://www.sahibinden.com/satilik-daire/istanbul-arnavutkoy». но когда я щелкнул любую ссылку с селеном вместо загрузки страницы, она не загрузила страницу, и в красивом супе вернулась кучка javascript и пустая html, как вы можете видеть ниже.


<body> 
  <script>(function(K){var W={},D={};var k(document.createEvent("CustomEvent")))</script> 
  <script>
    (function() {
      'use strict';
      var afterReadyCbCalled = false;
      var originalHeaders = ["Accept", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2","X-Origin-DC", "gytp","X-Forwarded-Proto", "https","X-Forwarded-For", "212.156.131.82","X-TLS-Version", "771","X-Client-SrcPort", "51979",];
      var originalBody = "";
      function afterReadyCb() {
        if (afterReadyCbCalled) return;
        afterReadyCbCalled = true;
        var xhr = new XMLHttpRequest();
        xhr.onload = function() {
          var isValid = xhr.getResponseHeader("ISTL-INFINITE-LOOP");
          if (isValid != null && isValid != '') return;
          var a = xhr.getResponseHeader("ISTL-REDIRECT-TO");
          if (a != null && a != '') {
            location.replace(a);
          } else {
            if (window.history != null && typeof history.replaceState === 'function') {
              var responseURL = xhr.responseURL != null ? xhr.responseURL : xhr.getResponseHeader("ISTL-RESPONSE-URL");
              if (responseURL != null && responseURL != '') {
                history.replaceState(null, '', responseURL);
              }
            }
            window.location.reload();
          }
        };
        xhr.open("get", location.href, true);
        for (var i = 0; i < originalHeaders.length; i += 2) {
          var headerName = originalHeaders[i];
          try {
            xhr.setRequestHeader(headerName, originalHeaders[i + 1]);
          } catch (e) {}
        }
        xhr.setRequestHeader("ISTL-INFINITE-LOOP", '1');
        xhr.send(originalBody);
        var evt = document.createEvent('Event');
        evt.initEvent('QLpZFJdHv', true, true);
        dispatchEvent(evt);
      }
      addEventListener('afterReady', afterReadyCb, false);
      setTimeout(afterReadyCb, 400);
    }());
  </script> 
  <style>
    html, body {
      margin: 0;
      padding: 0;
      background-color: white;
}
.preloader {
width: 100%;
height: 100%;
position: absolute;
left:0;
right:0;
top:0;
bottom:0;
background-image: qcQ==');
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
</style> 
  <div class="preloader"></div> 
  <style> body { background: white;
    }
  </style>   
 </body>

вот мой код:

from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import pandas as pd
import time

ua = UserAgent()
user_agent = ua.random

options = webdriver.ChromeOptions()
#options.add_argument('headless')
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument(f'user-agent={user_agent}')
browser = webdriver.Chrome('chromedriver.exe',chrome_options=options)

browser.get('https://www.sahibinden.com/satilik-daire/istanbul-arnavutkoy')
time.sleep(10)
link = browser.find_element_by_class_name('searchResultsTitleValue')
link.click()

soup = BeautifulSoup(browser.page_source,'html.parser')
print(soup)
browser.quit()```

how can i enter that page and get content of it ?
...