Dies ist mein Skript.Python String-Vergleich funktioniert nicht richtig
import MySQLdb import feedparser import string
def checkunique(t):
#t1 = ''.join(filter(lambda c: c in string.printable, t))
cur.execute("SELECT title from linkstwo")
titles = cur.fetchall()
for k in titles:
#k1 = ''.join(filter(lambda c: c in string.printable, k))
print "'%s'" % k
if t == k:
return False
return True
db = MySQLdb.connect ("localhost","root",password,"torrents") print "DB connection successful" cur = db.cursor()
url = "https://extratorrent.cc/rss.xml?type=popular&cid=4"
feed = feedparser.parse(url)
print "Parsing successful"
for post in feed.entries:
t = post.title
m = post.magneturi
#print "'%s'" % t
if checkunique(t):
cur.execute("INSERT INTO linkstwo (title, maglink) VALUES ('%s', '%s')" % \
(t, m))
db.commit()
print "Script ended"
Es analysiert einen RSS-Feed und fügt neue Einträge zu einer Datenbank hinzu.
Mein Problem ist die Funktion checkunique
liefert immer wahr und ich bekomme doppelte Einträge. Ich habe einige der Lösungen ausprobiert, um nicht druckbare Zeichen zu entfernen, die ihren Weg gefunden haben, aber immer noch kein Glück.
BTW, das ist ein sehr ineffizienter Weg, um auf Eindeutigkeit zu prüfen. Sie wählen alle Titel immer wieder ... Legen Sie eine eindeutige Einschränkung in die Datenbanktabelle und holen Sie doppelte Fehler, wenn sie ausgelöst werden. – trincot
Sollten Sie nicht k [0] im Vergleich verwenden? Ihre Variable namens Titel sollte ein Tupel-Tupel sein. –
Dies ist ein Testskript für das echte Skript, das ich erstellen möchte. Es ist wichtig, dass ich die Titel auf diese Weise vergleiche, da ich die neuen Titel in einer separaten Tabelle (Download-Datenbank) hinzufügen werde. Daten aus dieser Tabelle werden zum Herunterladen der zugehörigen Torrents in einem separaten Skript verwendet. –