Python: получить размер отображаемой веб-страницы

1

Есть ли способ получить размер отображаемой страницы через HTTP-запрос python?

Я не уверен, что моя формулировка верна, но то, что я подразумеваю под "отображаемой страницей", - это размер, который браузер должен будет загружать (включая изображения, css,...). Не длина html-кода.

В качестве второго приоритета было бы также полезно узнать количество вызовов, и если страница была скопирована, так как это может повлиять на результат калибровки рассматриваемой страницы.

Большое спасибо за вашу помощь !

  • 2
    Это, безусловно, потребует запуска веб-страницы внутри механизма браузера, поскольку современные веб-страницы часто загружают содержимое динамически из запущенных сценариев. Простой рекурсивный разбор HTML не обрежет его.
  • 0
    Чтобы на самом деле имитировать все, что вам понадобится поддельный веб-браузер. Возможно, попробуйте selenium (библиотека для автоматизации с браузерами) или попробуйте самостоятельно проанализировать URL-адреса скриптов и URL-адресов таблиц стилей и загрузить их с запросами (библиотека для выполнения http-запросов). , Вы, вероятно, не получите всего, хотя, если вы сделаете это таким образом (веб-страницы сегодня могут быть очень динамичными).
Показать ещё 3 комментария
Теги:
http

1 ответ

1
Лучший ответ

Я написал сценарий Python, который делает это с Selenium и безголовым Chrome Remote WebDriver:

https://github.com/jorgeorpinel/site-page-size-scrapper (Не стесняйтесь клонировать или вилку!)

Хитрость заключается в том, чтобы включить ведение журнала производительности, выборку и анализ журналов сети для расчета полного размера веб-страницы. Что-то вроде этого:

from selenium import webdriver 

options = webdriver.ChromeOptions()
options.add_argument('headless')
capbs = webdriver.DesiredCapabilities.CHROME.copy()
capbs.update({'loggingPrefs': {'performance': 'ALL'}, 'detach': False})
driver = webdriver.Remote("http://127.0.0.1:9515", capbs, options=options)
# ^ Requires chromedriver (server) running locally (on default port).

driver.get('https://www.baidu.com/')
logs = driver.execute('getLog', {'type': 'performance'})['value']
# Now analyze the Network logs as you prefer.

См. Https://chromedevtools.github.io/devtools-protocol/tot/Network

Ещё вопросы

Сообщество Overcoder
Наверх
Меню