Get HTML source of WebElement in Selenium WebDriver using Python
You can read the innerHTML
attribute to get the source of the content of the element or outerHTML
for the source with the current element.
Python:
element.get_attribute('innerHTML')
Java:
elem.getAttribute("innerHTML");
C#:
element.GetAttribute("innerHTML");
Ruby:
element.attribute("innerHTML")
JavaScript:
element.getAttribute('innerHTML');
PHP:
$element->getAttribute('innerHTML');
It was tested and worked with the ChromeDriver
.
How to get page html code using selenium?
to get the entire source code you just do:
driver.get('https://mangalib.me/manga-list')
html = browser.page_source
then you can do whatever you want with it
Get html of inspect element source with selenium
It seems that it's working after some delay. If I were you I should try to experiment with the delay time.
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get('http://bijsluiters.fagg-afmps.be/?localeValue=nl')
searchform = browser.find_element_by_class_name('iceInpTxt')
searchform.send_keys('cefuroxim')
button = browser.find_element_by_class_name('iceCmdBtn').click()
time.sleep(10)
element = browser.find_element_by_class_name('contentContainer')
html = element.get_attribute('innerHTML')
browser.close()
print(html)
Addition: a nicer way is to let the script proceed when an element is available (because of time it takes with JS (for example) before a specific element has been added to the DOM). The element to look for in your example is table with id iceDatTbl
(for what I could find after a quick look).
How to get the html source of a specific element with selenium?
The following code will give you the HTML in the div element:
sel = selenium('localhost', 4444, browser, my_url)
html = sel.get_eval("this.browserbot.getCurrentWindow().document.getElementById('1').innerHTML")
then you can use BeautifulSoup to parse it and extract what you really want.
I hope it helps
Using python and Selenium to scrape the innerText within an HTML element?
views
is the WebElement which on printing rightly prints:
(session="12e48df447f7df855a1ee596ba609a30", element="1027ec31-8cb8-4758-b4b0-82b85628ed6c")
Solution
To print the text 417 you need to induce WebDriverWait for the visibility_of_element_located() and you can use either of the following Locator Strategies:
Using CSS_SELECTOR and text attribute:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "p#totReqCountVal[class$='js-total-requests']"))).text)
Using XPATH and
get_attribute("innerHTML")
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[@id='totReqCountVal' and contains(@class, 'js-total-requests')]"))).get_attribute("innerHTML"))
Note : You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
You can find a relevant discussion in How to retrieve the text of a WebElement using Selenium - Python
References
Link to useful documentation:
get_attribute()
methodGets the given attribute or property of the element.
text
attribute returnsThe text of the element.
- Difference between text and innerHTML using Selenium
Get value from a website using selenium in python
From the information you shared here we can see that the element containing the desired information doesn't have class name attribute with a value of Melde-ID
.
It has class name with value of title
and contains text Melde-ID
.
Also, you should use webdriver wait expected condition instead of driver.implicitly_wait(0.5)
.
With these changes your code can be something like this:
from selenium import webdriver
import codecs
import os
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
url = "https://...."
driver = webdriver.Chrome('./chromedriver')
wait = WebDriverWait(driver, 20)
#maximize browser
driver.maximize_window()
#launch URL
driver.get(url)
content = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@class,'title') and contains(.,'Melde-ID:')]"))).text
I added .text
to extract the text from that web element.
Now content
should contain Melde-ID: 355460
value.
Related Topics
Python Subprocess Get Children's Output to File and Terminal
How to Upgrade All Python Packages with Pip
How to Get Variable Data from a Class
How Would You Make a Comma-Separated String from a List of Strings
Secondary Axis with Twinx(): How to Add to Legend
How to Get If a Key Is Pressed Pygame
How to Extract a Single Value from a JSON Response
Double Iteration in List Comprehension
How to Print Original Variable's Name in Python After It Was Returned from a Function
How to Escape Os.System() Calls
Shooting a Bullet in Pygame in the Direction of Mouse
Comprehensive Beginner's Virtualenv Tutorial
Convert Excel Style Date with Pandas
Pandas: Drop Consecutive Duplicates
Pythonic Way to Check If a List Is Sorted or Not
How to Convert a Pil Image into a Numpy Array
Getting the Index of the Returned Max or Min Item Using Max()/Min() on a List