Twitter Info Scraper

No credit card required

This Actor is under maintenance.

This actor is under maintenance and it may unreliable.

Twitter Info Scraper

Twitter Info Scraper

arcatdmz/twitter-ff

No credit card required

Get Twitter user info

Dockerfile

1# This is a template for a Dockerfile used to run acts in Actor system. 2# The base image name below is set during the act build, based on user settings. 3# IMPORTANT: The base image must set a correct working directory, such as /usr/src/app or /home/user 4FROM apify/actor-node-basic:v0.21.10 5 6# Second, copy just package.json and package-lock.json since it should be 7# the only file that affects "npm install" in the next step, to speed up the build 8COPY package*.json ./ 9 10# Install NPM packages, skip optional and development dependencies to 11# keep the image small. Avoid logging too much and print the dependency 12# tree for debugging 13RUN npm --quiet set progress=false \ 14 && npm install --only=prod --no-optional \ 15 && echo "Installed NPM packages:" \ 16 && (npm list --all || true) \ 17 && echo "Node.js version:" \ 18 && node --version \ 19 && echo "NPM version:" \ 20 && npm --version 21 22# Copy source code to container 23# Do this in the last step, to have fast build if only the source code changed 24COPY . ./ 25 26# NOTE: The CMD is already defined by the base image. 27# Uncomment this for local node inspector debugging: 28# CMD [ "node", "--inspect=0.0.0.0:9229", "main.js" ] 29

package.json

1{ 2 "name": "apify-project", 3 "version": "0.0.1", 4 "description": "", 5 "author": "It's not you it's me", 6 "license": "ISC", 7 "dependencies": { 8 "apify": "0.21.10", 9 "twitter": "latest" 10 }, 11 "scripts": { 12 "start": "node main.js" 13 } 14}

main.js

1const Apify = require('apify'); 2const Twitter = require('twitter'); 3 4Apify.main(async () => { 5 // Get input of your actor 6 const input = await Apify.getValue('INPUT'); 7 console.log('My input:'); 8 console.dir(input); 9 10 // Create a twitter client and retrieve data 11 const client = new Twitter({ 12 ...input 13 }); 14 if (!Array.isArray(input.screen_names)) input.screen_names = ["arcatdmz"]; 15 const data = await Promise.all(input.screen_names.map(u => getInfo(u, client))); 16 17 // And then save output 18 const output = { 19 data, 20 crawledAt: new Date(), 21 }; 22 console.log('My output:'); 23 console.dir(output); 24 await Apify.setValue('OUTPUT', output); 25}); 26 27async function getInfo(screen_name, client) { 28 return await new Promise((resolve, reject) => { 29 client.get('users/show', { screen_name }, function(error, data, response) { 30 if (error) { 31 resolve({ 32 screen_name, 33 error 34 }); 35 return; 36 } 37 const { followers_count, friends_count, listed_count, favourites_count, statuses_count } = data; 38 resolve({ 39 screen_name, 40 followers_count, 41 friends_count, 42 listed_count, 43 favourites_count, 44 statuses_count 45 }); 46 }); 47 }); 48}
Developer
Maintained by Community
Actor stats
  • 189 users
  • 41k runs
  • Modified over 1 year ago
Categories

You might also like these Actors