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.