Python Selenium, доступ к источнику HTML

Как я могу получить источник HTML в переменной, используя модуль Selenium с Python?

Я хотел сделать что-то вроде этого:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get(raw_input("Enter URL: "))
if "whatever" in html_source:
    # Do something
else:
    # Do something else

Как я могу это сделать? Я не знаю, как получить доступ к источнику HTML.

Ответ 1

Вам нужно вызвать свойство page_source. См. Ниже.

from selenium import webdriver
browser = webdriver.Firefox()
browser.get(raw_input("Enter URL: "))
html_source = browser.page_source
if "whatever" in html_source:
    # do something
else:
    # do something else

Ответ 2

С Selenium2Library вы можете использовать get_source()

import Selenium2Library
s = Selenium2Library.Selenium2Library()
s.open_browser("localhost:7080", "firefox")
source = s.get_source()

Ответ 3

driver.page_source поможет вам получить исходный код страницы. Вы можете проверить, присутствует ли текст в источнике страницы или нет.

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("some url")
if "your text here" in driver.page_source:
    print('Found it!')
else:
    print('Did not find it.')

Если вы хотите сохранить источник страницы в переменной, добавьте строку ниже после driver.get:

var_pgsource=driver.page_source

и измените условие if на:

if "your text here" in var_pgsource:

Ответ 4

Используя исходный код страницы, вы получите весь HTML-код.
Поэтому сначала определите блок кода или тега, в котором вам нужно получить данные или щелкнуть элемент.

options = driver.find_elements_by_name_("XXX")
for option in options:
    if option.text == "XXXXXX":
        print(option.text)
        option.click()

Вы можете найти элементы по имени, XPath, id, ссылке и пути CSS.

Ответ 5

Чтобы ответить на вопрос о получении URL для использования для urllib, просто выполните этот код JavaScript:

url = browser.execute_script("return window.location;")

Ответ 6

Вы можете просто использовать объект WebDriver и получить доступ к исходному коду страницы через его поле @property page_source...

Попробуйте этот фрагмент кода :-)

from selenium import webdriver
driver = webdriver.Firefox('path/to/executable')
driver.get('https://some-domain.com')
source = driver.page_source
if 'stuff' in source:
    print('found...')
else:
    print('not in source...')

Ответ 7

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

import urllib.request

page="YOUR_URL"
with urllib.request.urlopen(page) as response:
      html = response.read()

Если источником является какой-то XML файл, вы можете использовать этот другой co-код и/или заменить часть кода:

html_source=html.decode(encoding='UTF-8')
html_source=html_source.replace("\n","")

Ответ 8

Я бы рекомендовал получить источник с urllib и, если вы собираетесь разбирать, используйте что-то вроде Красивый суп.

import urllib

url = urllib.urlopen("http://example.com") # Open the URL.
content = url.readlines() # Read the source and save it to a variable.