Благодаря @ BittoBennichan я смог собрать эту маленькую штуку на питоне, которая очищает идентификаторы пользователей, помеченные в сообщениях, опубликованных в Twitter:
from bs4 import BeautifulSoup
from selenium import webdriver
import time
# Create a new instance of the Firefox driver
driver = webdriver.Firefox()
# go to page
driver.get("http://twitter.com/XXXXXX/media")
#You can adjust it but this works fine
SCROLL_PAUSE_TIME = 2
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
# Now that the page is fully scrolled, grab the source code.
src = driver.page_source
#Past it into BS
soup = BeautifulSoup(src, 'html.parser')
divs = soup.find_all('div',class_='account')
#PRINT RESULT
#print('printing results')
#for div in divs:
# print(div['data-user-id'])
#SAVE IN FILE
print('Saving results')
with open('file.txt','w') as f:
for div in divs:
f.write(div['data-user-id']+'\n')
Так что программа работает отлично.Он получает идентификаторы и печатает их или записывает их в текстовый файл.Теперь я могу вставить этот список идентификаторов в Calc и добавить сводную таблицу, чтобы увидеть, сколько раз каждый отдельный тег был помечен.НО!У меня все еще есть некоторые проблемы:
-Я получаю только идентификаторы, а не имена пользователей.Теперь, что было бы проще: собирать имена пользователей одновременно с тем, как я собираю идентификаторы и складывать их вместе в файл?Или конвертировать файл ID в файл имени пользователя поздно?И как будет возможно это последнее решение?
- Я не могу прокручивать бесконечно.Я вернулся в сентябрь 2018 года, но это все.Это просто говорит «Вернуться к началу».Это потому, что я не вошел в Twitter или из-за каких-то встроенных ограничений?
Если у вас есть какие-либо комментарии, идеи и т. Д., Любая помощь будет принята с благодарностью.Спасибо!
РЕДАКТИРОВАТЬ1: Я нашел это (Tweepy) решение от здесь :
def get_usernames(ids):
""" can only do lookup in steps of 100;
so 'ids' should be a list of 100 ids
"""
user_objs = api.lookup_users(user_ids=ids)
for user in user_objs:
print(user.screen_name)
Так как мой список длиннее 100, я должен сделать это:
Для большего набора идентификаторов вы можете просто поместить это в цикл for и вызывать соответственно, соблюдая ограничение API Twitter.