Python method requests.get().content returns html code instead of file

Viewed 82

I am trying to use this code to create dataframe based on data from Google sheet:

from io import BytesIO
import requests
import pandas as pd

sheet_id = 'my_sheet_id'
req = requests.get(f'https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=csv')
data = req.content
df = pd.read_csv(BytesIO(data))

But instead of a data from table I get page source code in variable data like this:

b'\n<!DOCTYPE html>\n<html lang="ru">\n  <head>\n  <meta charset="utf-8">\n  <meta content="width=300, initial-scale=1" name="viewport">\n  <meta name="description" content="\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xb2\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b \xd0\xb8 \xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xba\xd1\x82\xd0\xb8\xd1\x80\xd1\x83\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xb8\xd1\x85 \xd0\xb2\xd0\xbc\xd0\xb5\xd1\x81\xd1\x82\xd0\xb5 \xd1\x81 \xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xb8\xd0\xbc\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd0\xbc\xd0\xb8\xc2\xa0\xe2\x80\x92 \xd1\x81 \xd0\xba\xd0\xbe\xd0\xbc\xd0\xbf\xd1\x8c\xd1\x8e\xd1\x82\xd0\xb5\xd1\x80\xd0\xb0, \xd1\x82\xd0\xb5\xd0\xbb\xd0\xb5\xd1\x84\xd0\xbe\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x88\xd0\xb5\xd1\x82\xd0\xb0. \xd0\xa0\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb4 \xd0\xb4\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb0\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb5 \xd0\xb1\xd0\xb5\xd0\xb7 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd0\xba \xd0\x98\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd1\x83. \xd0\x98\xd1\x81\xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd1\x83\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xa2\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b \xd0\xb4\xd0\xbb\xd1\x8f \xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xba\xd1\x82\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f \xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb\xd0\xbe\xd0\xb2 Excel. \xd0\x98 \xd0\xb2\xd1\x81\xd0\xb5 \xd1\x8d\xd1\x82\xd0\xbe \xd0\xb1\xd0\xb5\xd1\x81\xd0\xbf\xd0\xbb\xd0\xb0\xd1\x82\xd0\xbd\xd0\xbe. \xd0\x9e\xd1\x82 Google!">\n  <meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs">\n  <title>Google \xd0\xa2\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b\xc2\xa0\xe2\x80\x92 \xd0\xb1\xd0\xb5\xd1\x81\xd0\xbf\xd0\xbb\xd0\xb0\xd1\x82\xd0\xbd\xd0\xbe \xd1\x81\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xb2\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xb8 \xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xba\xd1\x82\xd0\xb8\xd1\x80\xd1\x83\xd0\xb9\xd1\x82\xd0\xb5 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b \xd0\xb2 \xd0\x98\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd0\xb5.</title>\n  <style>\n  @font-face {\n  font-family: \'Open Sans\';\n  font-style: normal;\n  font-weight: 300;\n  src: url(//fonts.gstatic.com/s/opensans/v15/mem5YaGs126MiZpBA-UN_r8OVuhs.ttf) format(\'truetype\');\n}\n@font-face {\n  font-family: \'Open Sans\';\n  font-style: normal;\n  font-weight: 400;\n  src: url(//fonts.gstatic.com/s/opensans/v15/mem8YaGs126MiZpBA-UFUZ0e.ttf) format(\'truetype\');\n}\n  </style>\n  <style>\n  h1, h2 {\n  -webkit-animation-duration: 0.1s;\n  -webkit-animation-name: fontfix;\n  -webkit-animation-iteration-count: 1;\n  -webkit-animation-timing-function: linear;\n  -webkit-animation-delay: 0;\n  }\n  @-webkit-keyframes fontfix

It is just a piece of output.

If I try just to enter url in browser: https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=csv The download of file starts without any problem.

What should I do to get data in the right way?

Thank you in advance!

0 Answers
Related