用于抓取推文的工具
项目描述
一个简单且无限制的 twitter 爬虫,带有 python。
在过去的几天里,推特几乎禁止了所有推特抓取工具。该存储库代表了一种替代工具,用于在给定语言和单词列表或帐户名称的两个给定日期(从开始到结束)之间删除推文,并保存包含检索数据的 csv 文件:
[UserScreenName, UserName, Timestamp, Text, Embedded_text, Emojis, Comments, Likes, Retweets, Image link, Tweet URL]
也可以Image link通过传递参数来下载和保存图像save_images = True,如果您只想抓取图像,我建议将参数设置为display_type = image仅显示包含图像的推文。
您也可以抓取用户个人资料信息,包括关注者和关注者。
在关注者/关注者抓取的情况下需要认证。建议用新账号登录(如果关注者列表很长,可能会被封号)。要登录您的帐户,您需要在env文件中输入您的用户名SCWEET_USERNAME和密码。您可以控制和函数中的参数。SCWEET_PASSWORDwaitget_users_followersget_users_following
用户代码允许您获取用户列表的所有信息,包括位置、加入日期以及关注者和关注者列表。检查这个例子。
要求:
pip install -r requirements.txt
注意:您需要在系统中安装 Chrome
结果 :
推文:
CSV 文件包含以下功能(对于每条推文):
- “用户屏幕名称”:
- “用户名”:用户名
- 'Timestamp' : 推文的时间戳
- '文本' : 推文文本
- 'Embedded_text' :写在推文上方的嵌入文本。如果相关推文是回复,它可能是图片、视频甚至是另一条推文。
- 'Emojis' : 推文中存在的表情符号
- '评论' : 评论数
- '喜欢':喜欢的数量
- '转推':转推的数量
- '图片链接' : 推文中图片的链接
- “推文 URL”:推文 URL。
下面的追随者 :
和in用户给出给定用户列表的关注者和关注者列表get_users_following。get_users_followers
很快将添加更多功能,例如“针对特定 Twitter 帐户的每条推文的所有重复”
用法 :
图书馆 :
该库现已可用。要安装库,请运行:
pip install Scweet==1.6
安装后,您可以按如下方式使用它:
from Scweet.scweet import scrape
from Scweet.user import get_user_information, get_users_following, get_users_followers``
在距离阿利坎特(西班牙)不到 200 公里的地方,用 'bitcoin'、'ethereum' 等词刮掉顶部推文,Lat=38.3452,Long=-0.481006,并且没有回复。
间隔越小,过程越慢(选择一个可以划分时间段的间隔,开始日期和最大日期)
data = scrape(words=['bitcoin','ethereum'], since="2021-10-01", until="2021-10-05", from_account = None, interval=1, headless=False, display_type="Top", save_images=False, lang="en",
resume=False, filter_replies=False, proximity=False, geocode="38.3452,-0.481006,200km")
使用标签#bitcoin 刮掉热门推文,靠近且不回复。
间隔越小,过程越慢(选择一个可以划分时间段的间隔,开始日期和最大日期)
data = scrape(hashtag="bitcoin", since="2021-08-05", until=None, from_account = None, interval=1,
headless=True, display_type="Top", save_images=False,
resume=False, filter_replies=True, proximity=True)
获取给定用户列表的主要信息
这些用户属于我的以下。
users = ['nagouzil', '@yassineaitjeddi', 'TahaAlamIdrissi',
'@Nabila_Gl', 'geceeekusuu', '@pabu232', '@av_ahmet', '@x_born_to_die_x']
**此函数返回一个列表,其中包含:**
["nb of following","nb of follower", "join date", "birthdate", "location", "website", "description"]
users_info = get_user_information(users, headless=True)
获取给定用户列表的关注者和关注者
在 .env 文件中输入您的用户名和密码。我建议您不要使用您的主帐户。
增加等待参数以避免禁止您的帐户并在互联网速度较慢时最大化抓取过程。我用了1,它是安全的。
使用 SCWEET_EMAIL、SCWEET_USERNAME 和 SCWEET_PASSWORD 变量设置您的 .env 文件并提供其路径
env_path = ".env"
following = get_users_following(users=users, env=env_path, verbose=0, headless=True, wait=2, limit=50, file_path=None)
followers = get_users_followers(users=users, env=env_path, verbose=0, headless=True, wait=2, limit=50, file_path=None)
终端 :
Scrape tweets.
optional arguments:
-h, --help show this help message and exit
--words WORDS Words to search. they should be separated by "//" : Cat//Dog.
--from_account FROM_ACCOUNT
Tweets posted by "from_account" account.
--to_account TO_ACCOUNT
Tweets posted in response to "to_account" account.
--mention_account MENTION_ACCOUNT
Tweets mention "mention_account" account.
--hashtag HASHTAG
Tweets containing #hashtag
--until UNTIL max date for search query. example : %Y-%m-%d.
--since SINCE
Start date for search query. example : %Y-%m-%d.
--interval INTERVAL Interval days between each start date and end date for
search queries. example : 5.
--lang LANG tweets language. Example : "en" for english and "fr"
for french.
--headless HEADLESS Headless webdrives or not. True or False
--limit LIMIT Limit tweets per <interval>
--display_type DISPLAY_TYPE
Display type of twitter page : Latest or Top tweets
--resume RESUME Resume the last scraping. specify the csv file path.
--proxy PROXY Proxy server
--proximity PROXIMITY Proximity
--geocode GEOCODE Geographical location coordinates to center the
search (), radius. No compatible with proximity
--minreplies MINREPLIES
Min. number of replies to the tweet
--minlikes MINLIKES Min. number of likes to the tweet
--minretweets MINRETWEETS
Min. number of retweets to the tweet
### To execute the script :
python scweet.py --words "excellente//car" --to_account "tesla" --until 2020-01-05 --since 2020-01-01 --limit 10 --interval 1 --display_type Latest --lang="en" --headless True
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。