Skip to content

Instantly share code, notes, and snippets.

@remoharsono
Created February 12, 2019 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save remoharsono/b170ea8232b27318e07f59b84dc1d43e to your computer and use it in GitHub Desktop.
Save remoharsono/b170ea8232b27318e07f59b84dc1d43e to your computer and use it in GitHub Desktop.
List your twitter followers
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19',
}
def get_next(url, start_number, num_pages, page_number):
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
user_list = soup.find('div', attrs={'class':'user-list'})
user_items = user_list.find_all('table', attrs={'class':'user-item'})
row_number = start_number
for user_item in user_items:
info = user_item.find('td', attrs={'class':'info'})
anchors = info.find_all('a', attrs={'href':False})
for anchor in anchors:
print(str(row_number) + " " + anchor['name'])
row_number += 1
more = soup.find('div', attrs={'class':'w-button-more'})
if more is not None:
more_anchor = more.find('a')
next_segment = more_anchor['href']
page_number += 1
if page_number < num_pages:
url = base_url + next_segment
get_next(url, row_number, num_pages, current_page)
base_url = 'https://mobile.twitter.com'
username = 'remoharsono'
url = base_url + '/' + username + '/followers'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
num_followers = soup.find('span', attrs={'class':'count'})
followers_per_page = 20
num_pages = (int(num_followers.text) + int(followers_per_page) - 1) / int(followers_per_page)
num_pages = int(num_pages)
print("Number of followers: " + num_followers.text)
print("Number of followers per page: " + str(followers_per_page))
print("Number of pages: " + str(num_pages))
user_list = soup.find('div', attrs={'class':'user-list'})
user_items = user_list.find_all('table', attrs={'class':'user-item'})
row_number = 1
for user_item in user_items:
info = user_item.find('td', attrs={'class':'info'})
anchors = info.find_all('a', attrs={'href':False})
for anchor in anchors:
print(str(row_number) + " " + anchor['name'])
row_number += 1
more = soup.find('div', attrs={'class':'w-button-more'})
more_anchor = more.find('a')
next_segment = more_anchor['href']
# sample segment: /wokwith/followers?cursor=1624052730914607304
current_page = 1
url = base_url + next_segment
get_next(url, row_number, num_pages, current_page)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment