Почему исходный код веб-сайта отличается от кода при проверке в браузере? (Для webscraping) - PullRequest
1 голос
/ 20 января 2020

Я работаю над своим первым программным проектом, так что извините за неправильный lin go.

Моя цель: я пытаюсь почистить веб-страницы с сайта моей местной библиотеки. Конечная цель - автоматизировать обновление книг на веб-сайте.

Прогресс: я успешно использовал Python, Selenium и Webdriver для входа на сайт библиотеки и go на страницу «Оформление заказа» для просмотра моих одолженных предметов. Затем я использовал Beautiful Soup для извлечения кода HTML на странице «Оформление заказа» на сайте.

Проблема: Похоже, что исходный код HTML, когда я проверяю веб-сайт Checkouts (щелчок правой кнопкой мыши и выберите «Inspect» в браузере Chrome), отличается от код, когда я смотрю на исходный код HTML (щелкните правой кнопкой мыши и выберите «Просмотреть исходный код» в браузере Chrome).

Код HTML при просмотре исходного кода совпадает с тем, что извлекает мой код Python, но при этом отсутствует вся информация, которую я хочу очистить. Однако код HTML при проверке сайта содержит информацию, которую я хочу почистить.

Вопросы:

  1. Почему код HTML отличается, когда я «проверяю» сайт и «Просмотреть исходный код» из Chrome браузер? (Возможно, это «минификация»?)
  2. Как мне извлечь код HTML с информацией, которую я хочу очистить?

Я включил свой код ниже.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import requests

driver = webdriver.Chrome()
driver.get('https://www.torontopubliclibrary.ca/signin')

# Login details
username = 'abcdefghi'
password = 'abcd'

# Type Username
submitUsername = driver.find_element_by_id('userId')
submitUsername.send_keys(username)

# Type Password
submitPassword = driver.find_element_by_id('password')
submitPassword.send_keys(password)

# Press Enter
enter = driver.find_element_by_xpath('//*[@id="form_signin"]/div[2]/input[3]')
enter.click()

# Open Checkouts page
driver.get('https://account.torontopubliclibrary.ca/checkouts')

driver = requests.get('https://account.torontopubliclibrary.ca/checkouts').text
soup = BeautifulSoup(driver, 'html.parser')

1 Ответ

0 голосов
/ 20 января 2020

На ваш первый вопрос: «Почему код HTML отличается, когда я« проверяю »сайт и« Просмотреть исходный код »из браузера Chrome? (Возможно, это« минификация »?)»

«Просмотр исходного кода» отображает текстовый ответ HTML, полученный от сервера, когда вы запрашиваете страницу.

После того, как этот первоначальный ответ получен, на современных страницах много javascript выполняется, что изменяет исходный html, полученный от сервера. Когда вы «осматриваете» страницу, все изменения, сделанные с помощью javascript, отражаются в том, что вы видите, и синхронизируются с тем, что вы видите как пользователь в браузере, в то время как «Просмотр исходного кода» всегда возвращает первоначальный ответ от сервер, без каких-либо изменений, которые произошли после этого.

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