【问题标题】:Create Pandas Dataframe from WebScraping results of stock price从股票价格的 WebScraping 结果创建 Pandas 数据框
【发布时间】:2021-01-10 08:07:52
【问题描述】:

我正在尝试编写一个脚本,该脚本创建一个 Pandas 数据框 (df),并在每次 x 时将股票价格添加到 df。数据来自 wrebscraping。

这是我的代码,但我不知道如何每次将 x(例如 1 分钟)新数据添加到 df 而不是替换旧数据。

    import bs4 as bs
    import urllib.request
    import time as t
    import re
    import pandas as pd
    
    i = 1
    while i == 1:
        # !! Scraping
    
        link = 'https://www.onvista.de/aktien/DELIVERY-HERO-SE-Aktie-DE000A2E4K43'
    
        parser = urllib.request.urlopen(link).read()
        soup = bs.BeautifulSoup(parser, 'lxml')
    
        stock_data = soup.find('ul', {'class': 'KURSDATEN'})
        stock_price_eur_temp = stock_data.find('li')
        stock_price_eur = stock_price_eur_temp.get_text()
    
        final_stock_price = re.sub('[EUR]','', stock_price_eur)
        print (final_stock_price)
        t.sleep(60)
    
        # !! Building an dataframe 
    
        localtime = t.asctime(t.localtime(t.time()))
      
        stock_data_b = {
        'Price': [final_stock_price],
        'Time': [localtime],
                    }
    
        df = pd.DataFrame(stock_data_b, columns=['Price', 'Time'])
   

我希望你能帮助我解决这个问题。

【问题讨论】:

    标签: python pandas dataframe web-scraping data-analysis


    【解决方案1】:

    因为您在循环中创建了df,所以您每次都在重写该变量名称,并覆盖上一次迭代中的数据。您想在循环之前初始化一个数据框,然后每次都添加到它。

    在你的循环之前,添加一行

    df2 = pd.DataFrame()
    

    这只是创建一个空数据框。在您发布的代码结束后,添加

    df2 = df2.append(df, ignore_index = True)
    

    这会将每个新的df 添加到df2 的末尾。

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多