Проблема утилизации: «Проверка элемента» отличается от «Просмотр источника страницы» - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь очистить веб-страницу, которая содержит несколько вкладок внутри себя. Когда я нажимаю на нужную вкладку и после просмотра ее содержимого сначала возникают две проблемы. 1- Адрес веб-страницы не меняется и одинаков для всех вкладок. 2- Когда я вижу источник страницы с помощью «просмотра источника страницы» браузера (firefox и chrome), источник страницы также выглядит одинаково для всех вкладок, тогда как когда я использую «Inspect Elemnt» для одной из вкладок Я вижу свое целевое содержимое в виде html показанного кода.

Проблема в том, что я не смог получить доступ к содержимому нужной вкладки через python типичные коды для удаления из Интернета, доступные во всем мире WEB. Эти коды обычно основаны на bs4.

У кого-нибудь есть идея или пример кода, чтобы узнать, как решить мою проблему? Страница, которую я ищу, находится по следующему адресу: http://tsetmc.com/Loader.aspx?ParTree=151311&i=63917421733088077#

1 Ответ

0 голосов
/ 12 апреля 2020

просмотр веб-страниц с помощью beautifullsoup не может быть выполнен правильно, если на странице есть элемент javascript DOM. страница, которую вы пытаетесь очистить, имеет элемент javascript и показывает данные с этим. Разница между View Source и Inspect Element связана с браузером. На самом деле браузер делает его читаемым для пользователей. Подводя итог, вы должны использовать симуляцию браузера, чтобы получить те данные, которые вы ищете. Это может быть сделано Selenium. Вы можете искать использование селена и python для веб-скрапинга.

Вот простой пример использования селена и python для веб-скребинга:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException


url = 'http://tsetmc.com/Loader.aspx?ParTree=151311&i=63917421733088077#'

#firefox driver for selenium from: https://github.com/mozilla/geckodriver/releases

driver = webdriver.Firefox(executable_path=r'your-path\geckodriver.exe')
driver.get(url)

wait = WebDriverWait(driver, 10)

try:
    #wait for the page to load completely
    element = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "/html/body/div[4]/form/div[3]/div[2]/div[1]/div[2]/div[1]/table/tbody")))
    time.sleep(1)
finally:
    driver.quit()

Этот код откроет firefox, который вы должны поместить в каталог 'your-path\geckodriver.exe'. Обратите внимание на комментарий о geckodriver. он вам нужен для запуска селена.

Вы можете найти дополнительную информацию о селене.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...