【问题标题】:Web Scraping Real-Time网页抓取实时
【发布时间】:2019-04-29 03:17:34
【问题描述】:

我目前正在使用 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)

【问题讨论】:

  • 没有办法用python“实时”做到这一点。你能做的最好的就是定期轮询。

标签: python xml web-scraping beautifulsoup


【解决方案1】:

您可以使用while 循环,然后在最后添加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)

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多