Selenium не может извлечь исходный код страницы и вернуть пустое тело html-страницы

Вот мой код Python:

import pandas as pd
import pandas_datareader.data as web
import bs4 as bs
import urllib.request as ul

from selenium import webdriver
style.use('ggplot')
driver = webdriver.PhantomJS(executable_path='C:\\Phantomjs\\bin\\phantomjs.exe')
def getBondRate():
    #driver.deleteAllCookies();
    url = "https://www.marketwatch.com/investing/index/tnx?countrycode=xx"  

    driver.get(url)
    driver.implicitly_wait(10)
    html = driver.page_source
    return html
bondRate = getBondRate()
print(bondRate)

Несколько дней назад он читал отлично с Market Watch. Теперь он ничего не возвращает в теге Body. Селен не загружает страницу?

2 ответа

Вам также нужны теги HTML? Если нет, вы можете попробовать получить с помощью тега body. Вот как я мог бы сделать это с помощью Java.

String src=driver.findElement(By.tagName("body")).getText();

Согласно URL https://www.marketwatch.com/investing/index/tnx?countrycode=xx поведение, которое вы наблюдаете, в значительной степени оправдано.

Я взял ваш код и вместе с простым твиком попытался извлечь page_source с PhantomJS, а также ChromeDriver. Замечено, что при использовании любого варианта WebDriver, отпечатки пальцев WebDriver обнаруживаются и Fingerprinting error поднимается следующим образом:

  • Детали ошибки:

    Failed to load resource: the server responded with a status of 404 (Not Found)
    kpf.js?url=/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint&token=058cbc6a-f8b8-f175-ca68-8c2e0fd6a4e3:1 Fingerprinting error 
      name: Error 
      message: Error issuing AJAX request (status code: 404) 
      stack: Error: Error issuing AJAX request (status code: 404)
        at XMLHttpRequest.N.a.onreadystatechange (https://www.marketwatch.com/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint/script/kpf.js?url=/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint&token=058cbc6a-f8b8-f175-ca68-8c2e0fd6a4e3:1:1884)
    DevTools failed to parse SourceMap: https://www.marketwatch.com/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint/script/fingerprint.js.map
    
  • Снимок DevTools:

fingerprintingerror

  • Вы можете найти соответствующие обсуждения в:
    • Browser Automation with Selenium: Fingerprints, recognizability and traceability?
    • Can a website detect when you are using selenium with chromedriver?
    • Selenium Webdriver is detectable
Другие вопросы по тегам