daring, ambitious, supercilious
Привет!

Я пытаюсь скачать твиты с хештегами на кириллице, но у меня не выходит.
В сети почему-то не могу найти ответа.

Вы не могли бы посмотреть код? Огромное спасибо!

identation не скопировалась

@темы: Computer Science, Интернет

Комментарии
28.05.2017 в 00:59

Reflendey
А что именно не выходит?

Я подправил у себя локально отступы и запустил указав вместо гамлета medvedevrussia.

в итоге создался файл и там есть хештеги на русском, строки вроде
787036800376242176,2016-10-14 21:06:10,RT @Pravitelstvo_RF: Бюджет 2017-2019. Приоритетные проекты. СОБЫТИЯ НЕДЕЛИ #видеоблог #Медведев t.co/7PBdoBWs6m,94,0
28.05.2017 в 18:38

daring, ambitious, supercilious
Reflendey, вот если я ищу хештег на латинице, все ок. То есть medvedevrussia нормально выходит, а #медведевроссия не выходит.
При том, тут не выходит и в другом скрипте с использованием JSON тоже не выходит(( Кракозябры выходят. А в ДжейСоне вообще пустые твиты прилетают, если по-русски пишутся.
28.05.2017 в 19:45

Reflendey
Комментарии из какого-то примера?

#pass in the username of the account you want to download
get_all_tweets("гамлета")

Это же название аккаунта в котором надо искать, а не хэштег, и все падает потому что такого аккаунта нет.
И выводится информация по всем постам



Хештеги идут похоже просто как часть текста, то есть tweet.text.encode("utf-8")

Чтобы как-то отфильтровать по конкретному хештегу надо это явно делать.
Например



Но вполне возможно, эта библиотека и лучше умеет работать с хештегами, это просто если исходить из примера, который уже есть
31.05.2017 в 01:31

daring, ambitious, supercilious
Блин, что это я.

Да. Вот в этом коде не въезжаю, что происходит в итоге.
Вот тут сис заставил код замолчать и искать все. И, когда я его запускаю в пауэр шелле, мне выскакивают кракозябры, которые, подозреваю, хештег по-русски, а потом пустые твиты, если они по-русски. Я понимаю, что или нужно менять параметры в json.loads(data), или в принте назад на decode("utf8", "ignore")?

Спасибо еще раз ><'

читать дальше
31.05.2017 в 02:09

Reflendey
Все-таки код лучше совать под [/CODE].

Если честно, сейчас я уже не понимаю, что от кода ожидается и в чем именно с ним проблема.
powershell скорее всего использует cp1251.

Если предположить, что данные приходят в utf8, а их надо в cp1251 вывести, то можно просто везде сделать


Если это не поиожет, то можно скоировать крякозябры в www.artlebedev.ru/tools/decoder/ или www.online-decoder.com/ru чтобы определить какая кодировка на самом деле, а какая использовалась для вывода.

sys соответственно в такой ситуации можно не трогать. (хотя теоретически указание там utf8 должно было помочь).

Игнорить ошибки смысла нет, так как

Фактически означает "проигнорь все не ascii символы" (то есть кириллицу в даннои случае)
31.05.2017 в 02:14

daring, ambitious, supercilious
'это ошибка, которая выползает через полминуты молчания. с английскими хештегами все ок, качаются себе
31.05.2017 в 02:29

Reflendey
Уж не знаю откуда, но это cp437.

Соответственно код должен сработать

Можно за ним еще decode('utf8') приписать, ну или 'cp1251'. Т.к. иначе используется юникод, и возможно кто-то ожидает, что он будет закодирован в какой-то кодировке, но судя по моим экспериментам локально должно быть без этого.
И аналогичное там где сейчас ignore.

еще есть вариант поставть mingw bash и запускать из под него python, там всегда будет utf8 и скорее всего не будет никаких проблем с кодировкой.

Я например просто удалил все эти декодирования с игнором и из обычного юниксового терминала все ок


31.05.2017 в 22:04

daring, ambitious, supercilious
спасибо! удалить декодирования помогло :)))