如何使用python将数据从csv表发布到电报中?

时间:2019-12-12 19:40:12

标签: parsing google-bigquery telegram python-telegram-bot

如何使用python将数据从csv表发布到电报中?在哪里可以保存数据集以及如何进行查询?我是Telegram APi的初学者。我试图将数据集保存到GoogleBigQuery,但查询不起作用。我应该使用哪种服务? 我的代码

import requests
from bs4 import BeautifulSoup
import pandas as pd
import pandas_gbq
url = "https://ege.hse.ru/rating/2019/81031971/all/?rlist=&ptype=0&vuz-abiturients-budget-order=ge&vuz-abiturients-budget-val=10"
page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')

tbl = soup.find("table", {"id": "transparence_t"})

data_frame = pd.read_html(str(tbl))[0]
data_frame.columns=['Вуз','Качество приема на основании среднего балла ЕГЭ зачисленных на бюджетные места 2019','Рост/ падение 2019-2018','Количество студентов, зачисленных на бюджетные места','Из них: без экзаменов','Ср.балл рассчитан с вычетом баллов за И.Д.?']
data_frame.to_gbq('my_dataset.my_table', project_id='hseparser-261610', if_exists='fail', private_key='/Users/daniilorlov/Downloads/hseparser-261610-e5e26181b8be.json')

1 个答案:

答案 0 :(得分:0)

要了解您需要与Telegram通信的API调用的格式,建议您查看其文档(https://core.telegram.org/bots/api)。

关于您当前的问题,我只是尝试运行您的代码,它为我指定了列名称的字符返回了编码错误。我将它们更改为英文字母,并删除了空格和特殊字符。

import requests
from bs4 import BeautifulSoup
import pandas as pd
import pandas_gbq
url = "https://ege.hse.ru/rating/2019/81031971/all/?rlist=&ptype=0&vuz-abiturients-budget-order=ge&vuz-abiturie$
page = requests.get(url)



import pydata_google_auth
credentials = pydata_google_auth.get_user_credentials(
    ['https://www.googleapis.com/auth/cloud-platform'],
)



soup = BeautifulSoup(page.content, 'html.parser')

tbl = soup.find("table", {"id": "transparence_t"})

data_frame = pd.read_html(str(tbl))[0]
data_frame.columns=['FIRST_TENSE','SECOND_TENSE','THIRD_TENSE','FOURTH_TENSE','FIFTH_TENSE','SIXTH_TENSE']
data_frame.to_gbq('mynewdataset.mynewtable', project_id='myproject', if_exists='fail', credentials)

要进行身份验证,我安装了使用用户凭据的pydata_google_auth库。另外,您也可以通过服务帐户来执行此操作,好像您正在使用私钥进行API调用身份验证一样,在这种情况下,凭据变量可以指定如下:

from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
    key_path,
    scopes=["https://www.googleapis.com/auth/cloud-platform"],
)

https://cloud.google.com/bigquery/docs/authentication/service-account-file)。

我在python 3.5中做到了这一点,并且已经能够通过库pandas_gbq写入BigQuery。在所附的图片中,我的结果...

imported data

关于将这些数据保存在何处的存储位置取决于您的需要。 BigQuery可能是一个很好的解决方案,因为它可以让您准备好用于电报API调用的结构化数据,尤其是在您可能拥有大型数据集的情况下。

我希望这个答案对您有所帮助!