DEV Community

Kodlogs
Kodlogs

Posted on • Originally published at kodlogs.net

Make the code wait for page load in python

Introduction
This article will teach you to make your code wait for page load in python. In fact, if you are trying to make the code wait for the website to load all elements in it, this article should help you. You will learn libraries that play a vital role in web scraping.

Table of contents
How to make the code wait for page load in python
Solution 1
Solution 2
Solution 3
Solution 4
In general
Conclusion
How to make the code wait for page load in python
There are multiple solutions to this. We will use requests_html, requests, urllib and selenium in these solutions.
Requests HTML is a library that makes HTML parsing (for example, web scraping) as simple as possible.
For the Python programming language, Requests is an HTTP library. The project's purpose is to make HTTP requests more human-friendly and straightforward. Version 2.27.1 is the most recent release. The Apache License 2.0 applies to Requests. One of the most widely-used Python libraries is Requests. Queries make it very simple to send HTTP/1.1 requests. There's no need to manually add query strings to your URLs or form-encode your PUT and POST data – use the JSON method any more! Requests is one of the most popular Python libraries today, with over 30 million downloads per week— according to GitHub, over 1,000,000 repositories rely on Requests. You can put your faith in this code without a doubt. urllib is a package that contains numerous URL-related modules: Selenium is an open-source umbrella project that includes several browser automation frameworks and applications. It provides a replay tool that allows you to create functional tests without learning a test scripting language. The Selenium Python bindings offer a straightforward interface for developing Selenium WebDriver available and acceptability tests. You can use the Selenium Python API to quickly and naturally access all of Selenium WebDriver's functionality. The Selenium Python bindings give you a straightforward way to interface with Selenium WebDrivers like Firefox, Internet Explorer, Chrome, and Remote. Python versions 3.5 and higher are supported at the moment.
Solution 1
from requests_html import HTMLSession
s = HTMLSession()
response = s.get(url)
response.html.render()
print(response)
Solution 2
from bs4 import BeautifulSoup
from selenium import webdriver
url = “the url”
browser = webdriver.PhantomJS() browser.get(url)
html = browser.page_source
soup = BeautifulSoup(html, 'lxml')
a = soup.find('section', 'wrapper')
Solution 3
import urllib.request
try:
with urllib.request.urlopen(url) as response:
html = response.read().decode('utf-8') #use whatever encoding as per the webpage
except urllib.request.HTTPError as e:
if e.code==404:
print(f"{url} is not found")
elif e.code==503:
print(f'{url} base webservices are not available') ## can add authentication here
else:
print('http error',e)
Solution 4
r = requests.get('https://github.com', timeout=(3.05, 27))
In general
We should use selenium to click button on webpage using python.

Conclusion
The most straightforward methods to make your code wait for page load in python are requests_html, requests, urllib and selenium. Also, most of them simulate real website user behaviour making them load most of the sites completely.

Discussion (0)