Код ошибки Tweepy 400 - PullRequest
       14

Код ошибки Tweepy 400

0 голосов
/ 27 августа 2018

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

Сообщение об ошибке

> Traceback (most recent call last):
> 
>   File "<ipython-input-1-10547a7aea4c>", line 1, in <module>
>     runfile('F:/twitter_locations_n_scraper/02_twitterscrapping.py', wdir='F:/twitter_locations_n_scraper')
> 
>   File
> "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",
> line 668, in runfile
>     execfile(filename, namespace)
> 
>   File
> "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",
> line 108, in execfile
>     exec(compile(f.read(), filename, 'exec'), namespace)
> 
>   File "F:/twitter_locations_n_scraper/02_twitterscrapping.py", line
> 70, in <module>
>     for item in cursor.items(1000): # Remove the limit to 1000
> 
>   File "C:\ProgramData\Anaconda3\lib\site-packages\tweepy\cursor.py",
> line 49, in __next__
>     return self.next()
> 
>   File "C:\ProgramData\Anaconda3\lib\site-packages\tweepy\cursor.py",
> line 197, in next
>     self.current_page = self.page_iterator.next()
> 
>   File "C:\ProgramData\Anaconda3\lib\site-packages\tweepy\cursor.py",
> line 108, in next
>     data = self.method(max_id=self.max_id, parser=RawParser(), *self.args, **self.kargs)
> 
>   File "C:\ProgramData\Anaconda3\lib\site-packages\tweepy\binder.py",
> line 250, in _call
>     return method.execute()
> 
>   File "C:\ProgramData\Anaconda3\lib\site-packages\tweepy\binder.py",
> line 234, in execute
>     raise TweepError(error_msg, resp, api_code=api_error_code)
> 
> TweepError: Twitter error response: status code = 400

Я попробовал предполагаемое решение

api.update_status('Test')

Но это не работает для меня, я изменил ключи, и все же я сталкиваюсь с той же ошибкой, дважды переустановил пакет Tweepy, и все же ошибка не появляется.

Благодарим за помощь в устранении ошибки, заранее спасибо.

ОБНОВЛЕНИЕ: код, который я получаю сообщение об ошибке

import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import pandas as pd
import json
import csv
import sys
import time

path="F:\\twitter_locations_n_scraper\\"


ckey = '*****'
csecret = '******'
atoken = '*****'
asecret = '*****'

def toDataFrame(tweets):
    # COnvert to data frame
    DataSet = pd.DataFrame()

    DataSet['tweetID'] = [tweet.id for tweet in tweets]
    DataSet['tweetText'] = [tweet.text.encode('utf-8') for tweet in tweets]
    DataSet['tweetRetweetCt'] = [tweet.retweet_count for tweet in tweets]
    DataSet['tweetFavoriteCt'] = [tweet.favorite_count for tweet in tweets]
    DataSet['tweetSource'] = [tweet.source for tweet in tweets]
    DataSet['tweetCreated'] = [tweet.created_at for tweet in tweets]
    DataSet['userID'] = [tweet.user.id for tweet in tweets]
    DataSet['userScreen'] = [tweet.user.screen_name for tweet in tweets]
    DataSet['userName'] = [tweet.user.name for tweet in tweets]
    DataSet['userCreateDt'] = [tweet.user.created_at for tweet in tweets]
    DataSet['userDesc'] = [tweet.user.description for tweet in tweets]
    DataSet['userFollowerCt'] = [tweet.user.followers_count for tweet in tweets]
    DataSet['userFriendsCt'] = [tweet.user.friends_count for tweet in tweets]
    DataSet['userLocation'] = [tweet.user.location for tweet in tweets]
    DataSet['userTimezone'] = [tweet.user.time_zone for tweet in tweets]
    DataSet['Coordinates'] = [tweet.coordinates for tweet in tweets]
    DataSet['GeoEnabled'] = [tweet.user.geo_enabled for tweet in tweets]
    DataSet['Language'] = [tweet.user.lang for tweet in tweets]
    tweets_place= []
    #users_retweeted = []
    for tweet in tweets:
        if tweet.place:
            tweets_place.append(tweet.place.full_name)
        else:
            tweets_place.append('null')
    DataSet['TweetPlace'] = [i for i in tweets_place]
    #DataSet['UserWhoRetweeted'] = [i for i in users_retweeted]

    return DataSet

OAUTH_KEYS = {'consumer_key':ckey, 'consumer_secret':csecret,'access_token_key':atoken, 'access_token_secret':asecret}
#auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret'])
auth = tweepy.AppAuthHandler('******', '*******')

api = tweepy.API(auth, wait_on_rate_limit=True,wait_on_rate_limit_notify=True)

if (not api):
    print ("Can't Authenticate")
    sys.exit(-1)
else:
    df=pd.read_csv(path+"00_all_location_India_full.csv")

    print ("Scraping data now") # Enter lat and long and radius in Kms
    for i in range(0,len(df)):
        x="%s,%s,30km"%(df['latitude'][i],df['longitude'][i]) #,q='motox4', since='2018-08-16',until='2018-08-18',
        cursor = tweepy.Cursor(api.search,since='2018-08-23',until='2018-08-24',lang='en',count=1000)
        results=[]
        print (i)
        for item in cursor.items(1000): # Remove the limit to 1000
            results.append(item)
        DataSet = toDataFrame(results)
        DataSet['latitude']=df['latitude'][i]
        DataSet['longitude']=df['longitude'][i]
        DataSet['radius']=30
        del DataSet['Coordinates']
        DataSet.to_csv(path+'cities_aug23.csv',encoding='utf-8',index=False,mode="a")

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Это интересный вопрос, на самом деле, то, как вы написали свой вопрос, привело меня к написанию этого ответа,

Вы упомянули, что это работало, но больше нет, так что, по моему мнению, это может произойти по двум причинам ...

Браузер

устарел в браузере, что не позволяет работать скрипту. возможно, вам следует попытаться отключить функциюDefault () при загрузке страницы и посмотреть, появляется ли какая-либо ошибка. попробуйте также изменить подключение к Интернету или перезагрузите модем Также убедитесь, что вы загружаете это с веб-сайта https, а не http.

или эти пути, которые вы указали в своем коде, возможно, у вас нет разрешения на чтение, у меня есть большие сомнения относительно этого пути, однако вы проверяете все пути и пытаетесь закрыть все, что может заблокировать соединения с этими путями.

C: \ ProgramData \ Anaconda3 \ Lib \

потому что для доступа к нему требуется проверка подлинности Windows. постарайтесь свести к минимуму разрешение UAC с панели управления. Вы также можете проверить вкладку безопасности, щелкнув правой кнопкой мыши по папке и выбрав свойства.

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

надеюсь, что мой пост поможет вам.

0 голосов
/ 06 сентября 2018

согласно официальной странице API Twitter. код 400 указывает на следующую ошибку, поэтому ваша проблема вызвана одной из перечисленных ниже причин, пожалуйста, проверьте их одну за другой:

-attachment_url параметр недействителен Соответствует HTTP 400. Предоставленное значение URL не является URL-адресом, который можно прикрепить к этому твиту.

-Плохие данные аутентификации Соответствует HTTP 400. Метод требует аутентификации, но он не был представлен или был полностью недействительным.

-параметр недействителен Соответствует HTTP 400. Предоставленное значение URL не является URL которые можно прикрепить к этому твиту.

-Плохой запрос Запрос был недействительным или не может быть обработан иным образом. Сопутствующее сообщение об ошибке будет объяснено далее. Запросы без аутентификации считаются недействительными и будут давать этот ответ.

-Анимированные GIF-файлы не допускаются при загрузке нескольких изображений. Соответствует HTTP 400. К одному твиту может быть прикреплен только один анимированный GIF

- Проверка идентификаторов носителя не удалась. Соответствует HTTP 400. Возникла проблема с идентификатором мультимедиа, отправленным с помощью твита.

- Идентификатор носителя не найден. Соответствует HTTP 400. Идентификатор носителя, прикрепленный к твиту, не найден.

-Данный URL недействителен. Соответствует HTTP 400. URL, включенный в твит, не может быть обработан. Это может быть вызвано тем, что не-ASCII-URL не может быть преобразован, или по другим причинам.

0 голосов
/ 29 августа 2018

Twitter недавно внес большие изменения в свой API, удалив большое количество функций, используемых клиентами и скребками Twitter. Поскольку HTTP 400 - «Плохой запрос», а ваш код работал до недавнего времени (когда были внесены изменения), я бы сказал, что можно с уверенностью предположить, что это является причиной. См подробности .

...