【问题标题】:Scrape join-dates/user info from a list (csv) of Twitter-users从 Twitter 用户列表 (csv) 中抓取加入日期/用户信息
【发布时间】:2021-03-31 17:14:22
【问题描述】:

我正在寻找一个可能非常简单的问题的解决方案,非常感谢一些帮助或提示。我对 python 和 webscraping 有基本的了解。

我想在 Twitter 上探索某个主题标签及其背后的社区。使用twint,我已将所有提及主题标签的推文下载到 .csv 文件中。之后,我清理了 .csv,这样就没有同一用户的多个条目(来自具有相同主题标签的多个推文)并将其保存为 .txt。 我现在想获得关于上述列表中大约 1500 名用户的更多信息 - 主要是他们加入 Twitter 的日期,推文数量将是一个奖励

我尝试过的: Twint 应该能够做到这一点,但它不起作用(我正在使用他们 github 上提供的 docker 映像)。我试图通过以下方式获取用户信息:

twint --userlist /bin/userlist.txt --user-full -o userlistfull.csv --csv

Twint 发出一条很长的错误消息,如果我理解正确的话,它与 twint 中的 open bug 相关:

CRITICAL:root:twint.get:User:'url'
ERROR:root:twint.run:Twint:Lookup:Unexpected exception occurred.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 307, in Lookup
    await get.User(self.config.Username, self.config, db.Conn(self.config.Database))
  File "/usr/local/lib/python3.6/site-packages/twint/get.py", line 228, in User
    await Users(j_r, config, conn)
  File "/usr/local/lib/python3.6/site-packages/twint/output.py", line 177, in Users
    user = User(u)
  File "/usr/local/lib/python3.6/site-packages/twint/user.py", line 31, in User
    _usr.url = ur['data']['user']['legacy']['url']
KeyError: 'url'
Traceback (most recent call last):
  File "/usr/local/bin/twint", line 8, in <module>
    sys.exit(run_as_command())
  File "/usr/local/lib/python3.6/site-packages/twint/cli.py", line 339, in run_as_command
    main()
  File "/usr/local/lib/python3.6/site-packages/twint/cli.py", line 324, in main
    run.Lookup(c)
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 386, in Lookup
    run(config)
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 329, in run
    get_event_loop().run_until_complete(Twint(config).main(callback))
  File "/usr/local/lib/python3.6/asyncio/base_events.py", line 488, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 235, in main
    await task
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 270, in run
    await self.Lookup()
  File "/usr/local/lib/python3.6/site-packages/twint/run.py", line 307, in Lookup
    await get.User(self.config.Username, self.config, db.Conn(self.config.Database))
  File "/usr/local/lib/python3.6/site-packages/twint/get.py", line 228, in User
    await Users(j_r, config, conn)
  File "/usr/local/lib/python3.6/site-packages/twint/output.py", line 177, in Users
    user = User(u)
  File "/usr/local/lib/python3.6/site-packages/twint/user.py", line 31, in User
    _usr.url = ur['data']['user']['legacy']['url']
KeyError: 'url'

我尝试遍历列表并让 twint 单独查找每个用户名,但它也不起作用:

import twint 
import os
import sys
import nest_asyncio 
nest_asyncio.apply()

c = twint.Config()

with open("userlist.txt", "r") as a_file:

  for line in a_file:

    stripped_line = line.strip()
    stripped_line = c.Username
    twint.run.Search(c)

使用我给我的 Google Colab 运行它

 CRITICAL:root:twint.run:Twint:Feed:noDataExpecting value: line 1 column 1 (char 0)
    sleeping for 1.0 secs
    CRITICAL:root:twint.run:Twint:Feed:noDataExpecting value: line 1 column 1 (char 0)
    sleeping for 8.0 secs
    CRITICAL:root:twint.run:Twint:Feed:noDataExpecting value: line 1 column 1 (char 0)
    sleeping for 27.0 secs
    CRITICAL:root:twint.run:Twint:Feed:noDataExpecting value: line 1 column 1 (char 0)
    sleeping for 64.0 secs

我在寻找什么 获取列表中这些用户的加入日期的最简单解决方案是什么?我应该使用不同的库吗?我可以用 beautifulsoup 之类的东西遍历列表并刮掉加入日期吗?我该怎么做?

非常感谢您的帮助,在此先感谢!

【问题讨论】:

    标签: python web-scraping twitter web-mining twint


    【解决方案1】:

    尝试使用安装它

    pip3 install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
    

    并确保您的 python 版本高于 3.6 source

    【讨论】:

      【解决方案2】:

      只需替换 twint/user.py 中的这一行:

      _usr.url = ur['data']['user']['legacy']['url']
      

      到这里:

      try:
          _usr.url = ur['data']['user']['legacy']['url']
      except:
          _usr.url = ''
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2012-12-20
      • 2011-09-08
      • 2018-02-03
      • 2015-02-25
      • 2016-10-28
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      相关资源
      最近更新 更多