Ich muss den vollständigen Text von evernote extrahieren und die Methode verwenden, die ich damals verwendet habe. Es scheint, dass Sie dies mit der Evernote-API tun können, aber es ist nicht so viel, also ist es problematisch. Daher werde ich vorstellen, wie Sie alle Notizen im HTML-Format ausgeben und mit Beautiful Soup kratzen.
Wählen Sie zuerst alle Noten mit "Befehl + A" aus. Exportieren Sie Notizen von dort. Wählen Sie HTML als Ausgabeformat. Speichern Sie es diesmal als Mynote auf Ihrem Desktop.
Die index.html von mynote ist der Index aller Notizen in der Ausgabedatei, und es gibt einen Link zu jeder HTML-Datei. Verwenden Sie diesen.
Als Prozedur
Das ist.
Beim Scraping werden in erster Linie bestimmte Informationen von einer Website extrahiert. Die Datei, die Sie zuvor gekratzt haben, ist keine Website, sondern im HTML-Format, sodass Sie sie kratzen können. Es gibt mehrere Python-Module, die abgekratzt werden können, aber dieses Mal werde ich etwas verwenden, das sich Schöne Suppe nennt.
Mit schöner Suppe mit Pip installieren.
$ pip install beautifulsoup4
Die schöne Suppe wird grundsätzlich wie folgt verwendet.
import urllib2
from bs4 import BeautifulSoup
html = urllib2.urlopen("http://~ ~ ~")
soup = BeautifulSoup(html)
scrape = soup.find_all("a")
Weitere Informationen finden Sie im offiziellen Dokument. http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Diesmal werden nur "oup.get_text () ", "oup.find_all (" a ")" und "oup.get ("href") "verwendet.
SQLAlchemy ist ein OR-Mapper, mit dem Sie bequem mit der Datenbank interagieren können, ohne sie in SQL zu schreiben. Lassen Sie uns mit pip installieren.
$ pip install sqlalchemy
Jetzt, wo ich fertig bin, werde ich kratzen.
Erstellen Sie zunächst eine Funktion, die nur den Satz extrahiert und zurückgibt, nachdem Sie die URL der Notiz angegeben haben.
def scrape_evernote(url):
note_url = "file:///(Verzeichnis notieren)" + url.encode('utf-8')
html = urllib2.urlopen(note_url)
soup = BeautifulSoup(html)
all_items = soup.get_text()
return "".join(all_items)
Die ersten drei Zeilen erstellen ein BeautifulSoup-Objekt.
Den vollständigen Text des URL-Ziels erhalten Sie mit all_items =oup.get_text ()
.
In dem darauf folgenden Teil werden die Zeichen, die mit get_text () abgerufen werden können, zeichenweise in das Array aufgenommen, sodass alle Arrays zu einer Zeichenfolge zusammengefasst werden.
Erstellen Sie als Nächstes eine Funktion zum Speichern des extrahierten Texts in SQLite.
def scrape_and_save2sql():
Base = sqlalchemy.ext.declarative.declarative_base()
class Evernote(Base):
__tablename__ = 'mynote'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
title = sqlalchemy.Column(sqlalchemy.String)
note = sqlalchemy.Column(sqlalchemy.String)
db_url = "sqlite+pysqlite:///evernote.sqlite3"
engine = sqlalchemy.create_engine(db_url, echo=True)
Base.metadata.create_all(engine)
#Erstellen Sie eine Sitzung
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
#Holen Sie sich die URL aller Notizen aus dem Index
index_url = "file:///(Verzeichnis notieren)/index.html"
index_html = urllib2.urlopen(index_url)
index_soup = BeautifulSoup(index_html)
all_url = index_soup.find_all("a")
for note_url in all_url:
title = note_url.get_text()
note = scrape_evernote(note_url.get("href"))
evernote = Evernote(title=title, note=note)
session.add(evernote)
session.commit()
Erstellen Sie zunächst "Base". Erstellen Sie dann ein Modell der Notiz.
class Evernote(Base):
__tablename__ = 'mynote'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
title = sqlalchemy.Column(sqlalchemy.String)
note = sqlalchemy.Column(sqlalchemy.String)
Speichern Sie diesmal einfach den Titel und den Inhalt der Notiz.
Erstellen Sie einen Speicherort und eine Sitzung für SQLite.
Danach erhalten Sie den Titel und die URL jeder Notiz aus index.html
.
Links zu jeder Notiz in index.html
<a href="URL notieren">Titel notieren</a>
Da es als konfiguriert ist, erhalten Sie alle Tags mit index_soup.find_all (" a ")
.
Da jedes Tag als Array gespeichert ist, nehmen Sie es heraus und holen Sie die URL und den Titel des Linkziels aus dem a-Tag.
Extrahieren Sie den Text aus dieser URL mit der zuvor erstellten scrape_evernote ()
.
Zum Schluss festschreiben und in SQLite speichern.
Damit ist die Extraktion abgeschlossen.
Wenn Sie in txt-Daten anstatt in SQLite ausgeben möchten
def scrape_and_save2txt():
file = open('evernote_text.txt', 'w')
#Holen Sie sich die URL aller Notizen aus dem Index
index_url = "file:///(Verzeichnis notieren)/index.html"
index_html = urllib2.urlopen(index_url)
index_soup = BeautifulSoup(index_html)
all_url = index_soup.find_all("a")
for note_url in all_url:
title = note_url.get_text()
file.write(title)
note = scrape_evernote(note_url.get("href"))
file.write(note)
file.close()
Wenn ja, ist es möglich. Natürlich können Sie auch im CSV-Format ausgeben.
Ich habe es am Anfang geschrieben, aber das allgemeine Verfahren ist
Es ist geworden. Diesmal waren es nur Sätze, aber die Bilder werden auch in einem Ordner mit demselben Namen wie der Titel in der Notiz gespeichert. Wenn Sie dies gut verwenden, können Sie alle Bilder in evernote extrahieren.
Recommended Posts