Home » Read a web page using a Raspberry Pi W

Read a web page using a Raspberry Pi W

by 2b4a3pico71

In this article we will fetch a web page using a Raspberry Pi W running micropython, we will the display the source code of the web page in the REPL window

You need to download the latest micropython firmware, you can get this from the following link

https://micropython.org/download/rp2-pico-w/

The first step that you need to do is to flash the MicroPython Firmware onto the Raspberry Pi Pico W.

You will need to put the Pico in Bootloader mode by holding the “BOOTSEL” button down while connecting the Pico W to your machine.

You will see a drive appear on your PC called RPI-PI2, drag the uf2 firmware that you downloaded from the micropython link above.

I use Thonny for development

Code

Connects to your network using Wi-Fi with your network id and password

Gets the IP Address of the Google homepage and connects to the IP address using a Socket connection

Performs a GET request and prints the result in the Shell window, you will see an example later on in the article

import time
import network
import socket


ssid = 'your network id here'
password = 'your password here'


wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)


# Wait for connection or fail
connection_attempts = 10
# 10 attempts to connect at 1 second intervals
while connection_attempts > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
connection_attempts -= 1
print('waiting for a connection.')
time.sleep(1)


# Handle connection error
if wlan.status() != 3:
raise RuntimeError('network connection has failed')
else:
print('connected')
status = wlan.ifconfig()
print( 'ip = ' + status[0] )


# Get IP address for google
addressinfo = socket.getaddrinfo("google.com", 80)
address = addressinfo[0][-1]


# Create a socket and make a HTTP request
mysocket = socket.socket()
mysocket.connect(address)
mysocket.send(b"GET / HTTP/1.0\r\n\r\n")


# Print the response
print(mysocket.recv(1024))

This was what I saw in the REPL window

>>> %Run -c $EDITOR_CONTENT
connected
ip = 192.168.1.188
b'HTTP/1.0 200 OK\r\nDate: Mon, 12 Sep 2022 20:22:45 GMT\r\nExpires: -1\r\nCache-Control: private, max-age=0\r\nContent-Type: text/html; charset=ISO-8859-1\r\nServer: gws\r\nX-XSS-Protection: 0\r\nX-Frame-Options: SAMEORIGIN\r\nSet-Cookie: AEC=AakniGOy2HvUIOceSrSD2uqee5S7_1amHXoccZitXBkO_-NBcv6gNbAtrvE; expires=Sat, 11-Mar-2023 20:22:45 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nAccept-Ranges: none\r\nVary: Accept-Encoding\r\n\r\n<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-GB"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/logos/doodles/2022/hm-queen-elizabeth-ii-6753651837109804.2-l.png" itemprop="image"><meta content="Queen Elizabeth II 1926 – 2022" property="twitter:title"><meta content="Queen Elizabeth II'

 

You may also like

Adblock Detected

Please support us by disabling your AdBlocker extension from your browsers for our website.