最近因为实验验证的需要,想要爬取推特的数据,首先想到的是通过推特官方的开发者计划拿到key然后直接爬取,连接如下:
twitter myapp 但是问题就在于,这玩意我用两个号申请都被拒绝了,据说是+86的号码被拒就是会很大。我……,想要申请试试的参考下面这个链接
知乎问题,这个下面的评论多看看,注意一些话术,可能会成功。
后来我找到了这个开源的东西,twint,可以直接爬取
https://github.com/twintproject/twint 安装方式就是官方的这个安装方式:

git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt

我是在ubunut20.04下面弄的,这个地方要注意,python的版本必须高于3.5,官方是要求3.6,我用3.8没问题。ubuntu20.04自带的就是python3.8。这个地方踩了大坑,弄了一晚上,ubuntu16.04自带的是3.5.

接下来就是使用了,直接使用twint命令就可以,看下官方的这几个说明:

usename替换为你想抓取的用户的名字就可以了。比如这个:

python获取推特数据 推特爬虫抓取_json


应该是LNstats。

twint -u username 抓取指定用户的所有推文,不包括转发,但是包括回复

twint -u username -s pineapple 抓取指定用户时间线上的所有包含"pineapple"的推文

twint -s pineapple 抓取所有人包含"pineapple"的推文

twint -u username --year 2014 抓取指定用户2014年之前发布的推文

twint -u username --since “2015-12-20 20:30:15” 收集指定用户指定时间之后的推文

twint -u username --since 2015-12-20 和上面一样的(没测试,翻译过来一样的,谁试了可以说下)

twint -u username -o file.txt 抓取指定用户的推文并存入file.txt

twint -u username -o file.csv --csv 抓取指定用户的推文存入file.csv

twint -u username --email --phone 抓取指定用户可能是电话或者是email的推文

twint -s “Donald Trump” --verified 抓取指定用户关于"Donald Trump"的推文

twint -g=“48.880048,2.385939,1km” -o file.csv --csv 抓取指定经纬度1km内的所有推文并存入file.csv

twint -u username -es localhost:9200 将抓取的推文输出给elasticsearch

twint -u username -o file.json --json 抓取指定用户的推文并输出为file.json

twint -u username --database tweets.db 抓取指定的推文并输出为tweets.db

twint -u username --followers 抓取指定用户的关注者

twint -u username --following 抓取指定用户关注的人

twint -u username --favorites 抓取指定用户喜欢的所有推文,最大上限3200条

**twint -u username --following --user-full ** 收集指定用户关注的所有用户信息

twint -u username --timeline 使用高效的方式从用户的个人资料中收集推文,最多3200条,包括推文和回复

twint -u username --retweets 使用快速的方式收集指定用户最后900条推文,包括转发

twint -u username --resume resume_file.txt 从最后保存的滚动id开始继续搜索。这个滚动id好像就是每个推文的id,当初看加载的内容,每个推文都有。我抓取了上面的账号的数据,大概这样:

python获取推特数据 推特爬虫抓取_json_02

最后说一句,在widows下面也可以用,参见官方的文档,但是我没成功,说是无法连接推特,开全局模式也没用。