In this article we will fetch a web page using a Raspberry Pi W running micropython, we will 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/
You first 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 our 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 – now for the code
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 thonny 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'