Я хочу использовать API Twitter для исследования хэштегов и следую этому руководству .
Тем не менее, я получаю следующую ошибку:
Traceback (most recent call last):
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\twitter\api.py", line 4875, in _ParseAndCheckTwitter
data = json.loads(json_data)
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-
32\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-
32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-
32\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\saly\Documents\Alpha - P\Python\Data Camp Files\datacamp.py",
line 17, in <module>
for line in stream:
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\twitter\api.py", line 4573, in GetStreamFilter
data = self._ParseAndCheckTwitter(line.decode('utf-8'))
File "C:\Users\saly\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\twitter\api.py", line 4884, in _ParseAndCheckTwitter
raise T
twitter.error.TwitterError: {'message': 'Unauthorized'}
[Finished in 1.0s withwitterError({'message': "Unauthorized"}) exit code 1]
[shell_cmd: python -u "C:\Users\saly\Documents\Alpha - P\Python\Data Camp
Files\datacamp.py"]
[dir: C:\Users\saly\Documents\Alpha - P\Python\Data Camp Files]
[path: C:\Program Files (x86)\Common Files\Intel\Shared
Libraries\redist\intel64\compiler;C:\ProgramData\Oracle\Java\javapath;C:\Program
Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma
SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\PuTTY\;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Users\saly\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\saly\AppData\Local\Programs\Python\Python36-32\;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\PuTTY\;C:\Program Files (x86)\Skype\Phone\;C:\Users\saly\AppData\Local\Microsoft\WindowsApps;C:\Python34\Scripts;C:\Python34;C:\Users\saly\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin;C:\Users\saly\AppData\Local\atom\bin;C:\Users\saly\AppData\Roaming\npm]
Вот мой код (я убрал ключи):
import csv
import twitter
api = twitter.Api(
consumer_key = '',
consumer_secret ='',
access_token_key = '',
access_token_secret = '')
hashtags_to_track = [
"#TheHighlanderWasAGreatMovie",
]
stream = api.GetStreamFilter(track=hashtags_to_track)
with open('tweets.csv', 'w+') as csv_file:
csv_writer = csv.writer(csv_file)
for line in stream:
# Signal that the line represents a tweet
if 'in_reply_to_status_id' in line:
tweet = twitter.Status.NewFromJsonDict(line)
print(tweet.id)
row = [tweet.id, tweet.user.screen_name, tweet.text]
csv_writer.writerow(row)
Наконец, я хочу экспортировать данные с помощью модуля csv. Если я делаю это неправильно или что-то явно не так, не могли бы вы отослать меня к правильному ресурсу? Любые советы по «отладке» также очень ценятся. Я использую Sublime после проблем с использованием пакета 'script' в Atom для запуска моего кода.
Если кто-нибудь из вас знает лучший ресурс / руководство по тому, что я пытаюсь сделать, пожалуйста, дайте мне знать! :)
Спасибо!
Редактировать: опечатки