GetOldTweets3 - HTTP 请求期间发生错误:HTTP 错误 404:未找到

Posted

技术标签:

【中文标题】GetOldTweets3 - HTTP 请求期间发生错误:HTTP 错误 404:未找到【英文标题】:GetOldTweets3 - An error occured during an HTTP request: HTTP Error 404: Not Found 【发布时间】:2020-09-23 14:46:46 【问题描述】:

您好,我正在使用 openSuse,当我尝试根据用户名抓取推文时,它显示“HTTP 请求期间发生错误:HTTP 错误 404:未找到。尝试在浏览器中打开:https://twitter.com/search?q=%20from%3Agoogle&src=typd”

给出的链接将我引导到不是 404 的网站。

我的代码是:

import GetOldTweets3 as got
import pandas as pd

username = 'google'
count = '10'

tweetCriteria = got.manager.TweetCriteria().setUsername(username).setMaxTweets(count)

tweets = got.manager.TweetManager.getTweets(tweetCriteria)

它给了我这些错误:

ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.

An error occured during an HTTP request: HTTP Error 404: Not Found
Try to open in browser: https://twitter.com/search?q=%20from%3Agoogle&src=typd
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py", line 343, in getJsonResponse
    response = opener.open(url)
  File "/usr/lib64/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib64/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib64/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib64/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib64/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3343, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-1-656ba958b174>", line 9, in <module>
    tweets = got.manager.TweetManager.getTweets(tweetCriteria)
  File "/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py", line 65, in getTweets
    json = TweetManager.getJsonResponse(tweetCriteria, refreshCursor, cookieJar, proxy, user_agent, debug=debug)
  File "/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py", line 348, in getJsonResponse
    sys.exit()
SystemExit

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/IPython/core/ultratb.py", line 1169, in get_records
    return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)
  File "/usr/lib/python3.6/site-packages/IPython/core/ultratb.py", line 316, in wrapped
    return f(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/IPython/core/ultratb.py", line 350, in _fixed_getinnerframes
    records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))
  File "/usr/lib64/python3.6/inspect.py", line 1490, in getinnerframes
    frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)
AttributeError: 'tuple' object has no attribute 'tb_frame'

---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py in getJsonResponse(tweetCriteria, refreshCursor, cookieJar, proxy, useragent, debug)
    342         try:
--> 343             response = opener.open(url)
    344             jsonResponse = response.read()

/usr/lib64/python3.6/urllib/request.py in open(self, fullurl, data, timeout)
    531             meth = getattr(processor, meth_name)
--> 532             response = meth(req, response)
    533 

/usr/lib64/python3.6/urllib/request.py in http_response(self, request, response)
    641             response = self.parent.error(
--> 642                 'http', request, response, code, msg, hdrs)
    643 

/usr/lib64/python3.6/urllib/request.py in error(self, proto, *args)
    569             args = (dict, 'default', 'http_error_default') + orig_args
--> 570             return self._call_chain(*args)
    571 

/usr/lib64/python3.6/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
    503             func = getattr(handler, meth_name)
--> 504             result = func(*args)
    505             if result is not None:

/usr/lib64/python3.6/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
    649     def http_error_default(self, req, fp, code, msg, hdrs):
--> 650         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    651 

HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

SystemExit                                Traceback (most recent call last)
    [... skipping hidden 1 frame]

<ipython-input-1-656ba958b174> in <module>
      8 
----> 9 tweets = got.manager.TweetManager.getTweets(tweetCriteria)

/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py in getTweets(tweetCriteria, receiveBuffer, bufferLength, proxy, debug)
     64             while active:
---> 65                 json = TweetManager.getJsonResponse(tweetCriteria, refreshCursor, cookieJar, proxy, user_agent, debug=debug)
     66                 if len(json['items_html'].strip()) == 0:

/usr/lib/python3.6/site-packages/GetOldTweets3/manager/TweetManager.py in getJsonResponse(tweetCriteria, refreshCursor, cookieJar, proxy, useragent, debug)
    347             print("Try to open in browser: https://twitter.com/search?q=%s&src=typd" % urllib.parse.quote(urlGetData))
--> 348             sys.exit()
    349 

SystemExit: 

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
    [... skipping hidden 1 frame]

/usr/lib/python3.6/site-packages/IPython/core/interactiveshell.py in showtraceback(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)
   2036                            'the full traceback.\n']
   2037                     stb.extend(self.InteractiveTB.get_exception_only(etype,
-> 2038                                                                      value))
   2039                 else:
   2040                     try:

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in get_exception_only(self, etype, value)
    821         value : exception value
    822         """
--> 823         return ListTB.structured_traceback(self, etype, value)
    824 
    825     def show_exception_only(self, etype, evalue):

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in structured_traceback(self, etype, evalue, etb, tb_offset, context)
    700                     chained_exceptions_tb_offset, context)
    701                 + chained_exception_message
--> 702                 + out_list)
    703 
    704         return out_list

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in structured_traceback(self, etype, value, tb, tb_offset, number_of_lines_of_context)
   1434             self.tb = tb
   1435         return FormattedTB.structured_traceback(
-> 1436             self, etype, value, tb, tb_offset, number_of_lines_of_context)
   1437 
   1438 

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in structured_traceback(self, etype, value, tb, tb_offset, number_of_lines_of_context)
   1334             # Verbose modes need a full traceback
   1335             return VerboseTB.structured_traceback(
-> 1336                 self, etype, value, tb, tb_offset, number_of_lines_of_context
   1337             )
   1338         elif mode == 'Minimal':

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in structured_traceback(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)
   1191 
   1192         formatted_exception = self.format_exception_as_a_whole(etype, evalue, etb, number_of_lines_of_context,
-> 1193                                                                tb_offset)
   1194 
   1195         colors = self.Colors  # just a shorthand + quicker name lookup

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in format_exception_as_a_whole(self, etype, evalue, etb, number_of_lines_of_context, tb_offset)
   1148 
   1149 
-> 1150         last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)
   1151 
   1152         frames = self.format_records(records, last_unique, recursion_repeat)

/usr/lib/python3.6/site-packages/IPython/core/ultratb.py in find_recursion(etype, value, records)
    449     # first frame (from in to out) that looks different.
    450     if not is_recursion_error(etype, value, records):
--> 451         return len(records), 0
    452 
    453     # Select filename, lineno, func_name to track frames with

TypeError: object of type 'NoneType' has no len()

我该如何解决?请帮忙!

【问题讨论】:

【参考方案1】:

这是由于最近更新 Twitter API 造成的。您可能想查看 getoldtweets3 的这个 Github 问题。

https://github.com/Mottl/GetOldTweets3/issues/98

【讨论】:

以上是关于GetOldTweets3 - HTTP 请求期间发生错误:HTTP 错误 404:未找到的主要内容,如果未能解决你的问题,请参考以下文章

在 AngularJS 中的 $http 请求期间显示微调器 GIF?

ActiveRecord 创建期间的 HTTP 请求

如何在 Ajax(Post) 请求期间抛出自定义 http 状态码

Angular 5 Universal 在服务器端渲染期间等待 http 请求返回

接收客户端在HTTP请求期间发送过来的值(HttpRequestBase/HttpRequestHttpContextBase/HttpConextHttpContext.Current)

键入网址到网页显示,期间发生了什么?