Jak mogę pobrać źródło HTML w zmiennej za pomocą modułu Selenium w Pythonie?
Chciałem zrobić coś takiego:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com")
if "whatever" in html_source:
# Do something
else:
# Do something else
Jak mogę to zrobić? Nie wiem, jak uzyskać dostęp do źródła HTML.
python
selenium
selenium-webdriver
user1008791
źródło
źródło
Odpowiedzi:
Musisz uzyskać dostęp do
page_source
nieruchomości:from selenium import webdriver browser = webdriver.Firefox() browser.get("http://example.com") html_source = browser.page_source if "whatever" in html_source: # do something else: # do something else
źródło
find_element_by_xpath("//*").get_attribute("outerHTML")
(Z Selenium2Library możesz używać
get_source()
import Selenium2Library s = Selenium2Library.Selenium2Library() s.open_browser("localhost:7080", "firefox") source = s.get_source()
źródło
driver.page_source pomoże Ci uzyskać kod źródłowy strony. Możesz sprawdzić, czy tekst jest obecny w źródle strony, czy nie.
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.')
Jeśli chcesz przechowywać źródło strony w zmiennej, dodaj poniższy wiersz po driver.get :
i zmień warunek if na:
if "your text here" in var_pgsource:
źródło
Korzystając ze źródła strony, otrzymasz cały kod HTML.
Więc najpierw zdecyduj, w którym bloku kodu lub tagu chcesz pobrać dane lub kliknąć element.
options = driver.find_elements_by_name_("XXX") for option in options: if option.text == "XXXXXX": print(option.text) option.click()
Możesz znaleźć elementy według nazwy, XPath, id, linku i ścieżki CSS.
źródło
Aby odpowiedzieć na pytanie dotyczące uzyskania adresu URL do użycia dla urllib, po prostu wykonaj następujący kod JavaScript:
url = browser.execute_script("return window.location;")
źródło
Możesz po prostu użyć
WebDriver
obiektu i uzyskać dostęp do kodu źródłowego strony za pośrednictwem jego@property
polapage_source
...Wypróbuj ten fragment kodu :-)
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...')
źródło
from bs4 import BeautifulSoup from selenium import webdriver driver = webdriver.Chrome() html_source_code = driver.execute_script("return document.body.innerHTML;") html_soup: BeautifulSoup = BeautifulSoup(html_source_code, 'html.parser')
Teraz możesz zastosować funkcję BeautifulSoup, aby wyodrębnić dane ...
źródło
Poleciłbym uzyskać źródło za pomocą urllib i, jeśli masz zamiar analizować, użyj czegoś takiego jak Beautiful Soup .
import urllib url = urllib.urlopen("http://example.com") # Open the URL. content = url.readlines() # Read the source and save it to a variable.
źródło