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:
- Вы можете найти соответствующие обсуждения в:
Browser Automation with Selenium: Fingerprints, recognizability and traceability?
Can a website detect when you are using selenium with chromedriver?
Selenium Webdriver is detectable