首页 > 解决方案 > Twint Python 库导致搜索查询异常

问题描述

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

twint -s pineapple

我得到了这个例外

回溯(最近一次通话最后):

文件“/usr/local/bin/twint”,第 33 行,在
sys.exit(load_entry_point('twint==2.1.21', 'console_scripts', 'twint')())

文件“/usr/local/lib/python3.6/dist-packages/twint/cli.py”,第 339 行,在 run_as_command
main()

文件“/usr/local/lib/python3.6/dist-packages/twint/cli.py”,第 330 行,在 main
run.Search(c)


搜索运行(配置,回调)中的文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 410 行

文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 329 行,运行
get_event_loop().run_until_complete(Twint(config).main(callback))

文件“/usr/lib/python3.6/asyncio/base_events.py”,第 484 行,在 run_until_complete
返回 future.result()


主要等待任务中的文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 235 行

文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 286 行,运行
等待 self.tweets()

推文中的文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 217 行,
等待 self.Feed()

文件“/usr/local/lib/python3.6/dist-packages/twint/run.py”,第 62 行,Feed
response = await get.RequestUrl(self.config, self.init)

文件“/usr/local/lib/python3.6/dist-packages/twint/get.py”,第 135 行,在 RequestUrl
response = await Request(_url, params=params, connector=_connector, headers=_headers)

文件“/usr/local/lib/python3.6/dist-packages/twint/get.py”,第 161 行,在请求
返回等待响应(会话,_url,参数)

文件“/usr/local/lib/python3.6/dist-packages/twint/get.py”,第 167 行,在 Response
async with session.get(_url, ssl=True, params=params, proxy=httpproxy) 为回复:

文件“/usr/local/lib/python3.6/dist-packages/aiohttp/client.py”,第 855 行,进入 self._resp
= await self._coro

文件“/usr/local/lib/python3.6/dist-packages/aiohttp/client.py”,第 361 行,在 _request
ssl=ssl,proxy_headers=proxy_headers,traces=traces)

文件“/usr/local/lib/python3.6/dist-packages/aiohttp/client_reqrep.py”,第 207 行,在init
url2 = url.with_query(params)

文件“/usr/local/lib/python3.6/dist-packages/yarl/init .py”,第 857 行,在 with_query new_query
= self._get_str_query(*args, **kwargs)

文件“/usr/local/lib/python3.6/dist-packages/yarl/init .py”,第 837 行,在 _get_str_query
用于 k,v 在查询中)

文件“/usr/local/lib/python3.6/dist-packages/yarl/init .py ”,第 837 行,在
for k,v 在查询中)

文件“yarl/_quoting.pyx”,第 226 行,在 yarl._quoting._Quoter 中。称呼

TypeError:参数应该是 str

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

如何解决这个问题?这个任务有没有最好的替代品?

标签: pythonweb-scrapingtwittertwint

解决方案


我在 python3.7 上遇到了同样的问题,并通过重新安装 yarl 来解决它,就像这样:

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

推荐阅读