Twint Python库导致搜索异常

问题描述

我必须通过搜索从Twitter收集一些数据。不幸的是,由于他们多次拒绝了我的请求,因此无法获得Twitter API。我决定为此目的使用twint python模块。我已经通过git安装了最新版本,然后尝试在tweets中搜索字符串,如下所示:

twint -s pineapple

它具有以下例外情况

Traceback (most recent call last):
  File "/usr/local/bin/twint",line 33,in <module>
    sys.exit(load_entry_point('twint==2.1.21','console_scripts','twint')())
  File "/usr/local/lib/python3.6/dist-packages/twint/cli.py",line 339,in run_as_command
    main()
  File "/usr/local/lib/python3.6/dist-packages/twint/cli.py",line 330,in main
    run.Search(c)
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 410,in Search
    run(config,callback)
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 329,in run
    get_event_loop().run_until_complete(Twint(config).main(callback))
  File "/usr/lib/python3.6/asyncio/base_events.py",line 484,in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 235,in main
    await task
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 286,in run
    await self.tweets()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 217,in tweets
    await self.Feed()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py",line 62,in Feed
    response = await get.RequestUrl(self.config,self.init)
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py",line 135,in RequestUrl
    response = await Request(_url,params=params,connector=_connector,headers=_headers)
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py",line 161,in Request
    return await Response(session,_url,params)
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py",line 167,in Response
    async with session.get(_url,ssl=True,proxy=httpproxy) as response:
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client.py",line 855,in __aenter__
    self._resp = await self._coro
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client.py",line 361,in _request
    ssl=ssl,proxy_headers=proxy_headers,traces=traces)
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client_reqrep.py",line 207,in __init__
    url2 = url.with_query(params)
  File "/usr/local/lib/python3.6/dist-packages/yarl/__init__.py",line 857,in with_query
    new_query = self._get_str_query(*args,**kwargs)
  File "/usr/local/lib/python3.6/dist-packages/yarl/__init__.py",line 837,in _get_str_query
    for k,v in query)
  File "/usr/local/lib/python3.6/dist-packages/yarl/__init__.py",in <genexpr>
    for k,v in query)
  File "yarl/_quoting.pyx",line 226,in yarl._quoting._Quoter.__call__
TypeError: Argument should be str

在我的Ubuntu上安装的python版本是3.6。我还用Python脚本导入了twint,但同样也出现了异常。

如何解决此问题?这个任务有什么最好的选择吗?

解决方法

我在使用 python3.7 时遇到了同样的问题,并通过重新安装 yarl 来解决它,例如 这样:

pip3 install yarl --force-reinstall --no-cache-dir