2017-09-17 1 views
1

Ich kratze einen sehr langen Forum-Thread, und ich möchte mit einer Datenbank, die Spalten mit den folgenden Informationen: Datum/vollständige Post-Text/zitierten Benutzer/zitierten Text/clean textReinigung Froschpost mit mehreren Zitaten in RVEST + STRINGR

Der saubere Text sollte der Beitrag jedes Benutzers sein, ohne die Zitate, wenn sie irgendjemandem antworten. Wenn die Post keine Antwort ist, würde ich sie als NA verlassen. Im Folgenden ist eine erfundene Post, mit erfundenen Benutzer, zu veranschaulichen, was ich haben es geschafft, so weit zu tun:

post<-"Meow1 wrote: »\noday is gonna be the day that they're gonna throw it back to you?\nBy now you should've somehow Realized what you gotta do\n\n\nI don't believe that anybody Feels the way I do, about you now\nMeow1 wrote: »\nI'm sure you've heard it all before But you never really had a doubt\n\n\nBecause maybe, you're gonna be the one that saves me\nMeow1 wrote: »\nAnd after all, you're my wonderwall\n\n\nAnd all the lights that lead us there are blinding" 

Dann versuche ich die zitierte Benutzer (Meow1) zu ziehen und es funktioniert:

QuotedUser_1<-ifelse(grepl('wrote:', post), gsub('\\s*wrote.*$', '', post), NA) 
QuotedUser_1 
[1] "Meow1" 

Dann habe ich dieses Codes für den zitierten Text herausziehen und den sauberen Text:

Quotedtext_1<- ifelse(grepl('wrote:', post), gsub('^.*wrote\\s*|\\s*\\n\\n\\n.*$', '', post), NA) 

es funktioniert, wenn nur ein zitierten Text gibt es, aber ansonsten gibt es nur das letzte Stück zitiert (im Beispiel , 'EIN nd schließlich, du bist mein Wonderwall ') Und gleiche gilt für den sauberen Text, es gibt nur die letzte Antwort:

Clean_text<- sub('^.*\\n\\n\\n\\s*|\\s*wrote.*', '', post) 

Wenn jemand einen Vorschlag, den Code zu verbessern, so dass ich einen Vektor haben kann mit allen Angeboten, und einen Vektor mit allen Antworten, wäre ich sehr dankbar ...

Prost

Antwort

0

Sind Sie sicher, dass Sie nicht den Autor und Textinformationen separat kratzen können? Ohne eine Quelle ist es schwer zu wissen, aber ich denke, dass sie durch verschiedene css-Selektoren erhalten werden können, was es viel einfacher macht, die Daten zu teilen. Wenn nicht, könnte es hilfreich sein, in str_locate_all zu suchen, mit dem Sie alle Vorkommen von z.B. "wrote:" und teilt die Zeichenfolge entsprechend auf.

+0

Haben Sie etwas dagegen, Ihre Lösung zu posten? Vielleicht wird jemand anderes ein ähnliches Problem in der Zukunft haben und war froh, hier zu lesen, wie man es löst :) – TomS

+0

Ich weiß und ich werde (trotz des Codes könnte jeder weinen, so dreckig wie es ist), ich möchte den behalten Material wurde anonym gekratzt, also muss ich den Quelltext neu erstellen. Ich werde es dieses Wochenende tun :) – Nuria

+0

Vielen Dank! Eine naheliegende Lösung ist immer besser als keine Lösung - zumindest haben Sie einen richtigen Start für Verbesserungen – TomS