Ich habe vor ein paar Wochen angefangen Python zu lernen. Zuerst habe ich mich halb durch das wirklich empfehlenswerte Buch "Learning Python the hard way 2.0" geknabbert und bin dann aus ungeduld mit Googles Hilfe und Tutorials und Codebeispielen an mein erstes Projekt gegangen: ein Scraper.
Ich bin von Datenextraktion aus dem großen Blob des Netzes sehr fasziniert und es war auch der Hauptgrund warum ich mit Python angefangen habe.
Zuerst wollte ein Script schreiben, dass mir alle Statusposts von einer beliebigen Person von Facebook beschafft, aber ich hab dann schnell gemerkt, dass Facebook das wohl nicht so gerne hat und alles tut um Scraper fernzuhalten und da hab ich mich dann erstmal an die Twipper API rangemacht Sobald ich fähiger bin werde ich hier auch das Facebookprojekt veröffentlichen. Meinen ersten dödeligen Versuch mit BeautifulSoup poste ich mal lieber nicht :B
Was tut der Code: Er checkt für einen zuvor spezifizierten Twitteraccount alle 7 Sekunden auf neue Tweets und speichert diese zusammen mit ein paar Metadaten in einer tmp.txt, wo auf Doubletten gecheckt wird, um dann alle einzigartigen Tweeps in der tweep.txt zu speichern.
Hab das nur zum lernen gecodet und hatte viel Hilfe von Google und ähnlichen Scripten von anderen Leuten.
Hier ist der Code:
Code: Alles auswählen
# Twitter Scraper Tool 3000
import sys
import os
import urllib2
import json
import re
import time
# input
twittername = raw_input("twittername please_> ")
num_tweets = 10
apiresp = urllib2.urlopen("https://api.twitter.com/1/statuses/user_timeline.json?screen_name=%s&count="%twittername+str(num_tweets))
data = json.loads(apiresp.read())
i=1
while i == 1:
# Show me whats going on.
print data
# prep the temporary file to store tweeps for uniqueness
tweepcontainer = open("tmp.txt", "a")
# select the input from the twitter API
for tweet in data:
datentime = tweet['created_at']
tweep_text = tweet['text']
source = tweet['source']
coords = tweet['place']
citeh = coords['name']
country = coords['country']
# compose the line to store
one_tweet = "DATE: " + datentime +" || CONTENT: "+tweep_text+" || DEVICE: " + source +" || LOCATION: %s, %s" "\n" % (citeh, country)
# write it
tweepcontainer.write(one_tweet.encode('ascii', 'ignore'))
tweepcontainer.close()
#kill doubles routine
notyetcleaned = open("tmp.txt")
uniquetweeps = open("tweeps.txt", "w")
uniquelines = set(notyetcleaned.read().split("\n"))
uniquetweeps.write("".join([line + "\n" for line in uniquelines]))
uniquetweeps.close()
notyetcleaned.close()
os.remove("tmp.txt")
print "\nSo if you want this endlessloop of checking for new messages to stop hit Ctrl-C.\n"
time.sleep(7)
Für alle Schönheits-Tipps bin ich sehr dankbar. z.B. umschrieb in defs oder so. Vor allem bin ich aber für Inhaltliche Hinweise dankbar. z.B. wo der Code schlecht und falsch oder uneffektiv ist.
danke für alle Tipps im vorraus.