Web Scraping в режиме реального времени - PullRequest
0 голосов
/ 27 ноября 2018

В настоящее время я занимаюсь веб-очисткой с использованием BeautifulSoup, который извлекается и записывается в формате xml, как показано в приведенном ниже коде. Мне просто интересно, что можно сделать, чтобы сделать это в режиме реального времени, поскольку веб-сайт обновляется каждые 5 минут.

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)

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете использовать в то время как цикл , затем в конце вы можете добавить sleep на 5 минут.

На вашем примере это будет:

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)
...