Ailis Curran
Ailis Curran

Reputation: 45

Web Scraping Real-Time

I am currently web scraping using BeautifulSoup which is fetched and wrote in xml as shown in the code below, I am just wondering what could I do to make it real time as the website updates every 5 mins.

import csv
import requests
from bs4 import BeautifulSoup

url = 'http://www.dublincity.ie/dublintraffic/cpdata.xml?1543254514266'

res = requests.get(url)
soup = BeautifulSoup(res.content,"xml")
data = []
for item in soup.select("carpark"):
    ditem = {}
    ditem['Name'] = item.get("name")
    ditem['Spaces'] = item.get("spaces")
    data.append(ditem)

with open("xmldocs.csv","w",newline="") as f:
    writer = csv.DictWriter(f,["Name","Spaces"])
    writer.writeheader()
    for info in data:
        writer.writerow(info)

Upvotes: 2

Views: 1426

Answers (1)

Wundark
Wundark

Reputation: 96

You can use a while loop, then at the end you can add a sleep for 5 mins.

Using your example this would be:

import csv
import requests
from bs4 import BeautifulSoup
import time

while True:
    url = 'http://www.dublincity.ie/dublintraffic/cpdata.xml?1543254514266'

    res = requests.get(url)
    soup = BeautifulSoup(res.content,"xml")
    data = []
    for item in soup.select("carpark"):
        ditem = {}
        ditem['Name'] = item.get("name")
        ditem['Spaces'] = item.get("spaces")
        data.append(ditem)

    with open("xmldocs.csv","w",newline="") as f:
        writer = csv.DictWriter(f,["Name","Spaces"])
        writer.writeheader()
        for info in data:
            writer.writerow(info)

    time.sleep(5 * 60)

Upvotes: 1

Related Questions