J'ai besoin d'extraire le texte intégral d'Evernote et de publier la méthode que j'ai utilisée à l'époque. Il semble que vous puissiez le faire en utilisant l'API Evernote, mais ce n'est pas tellement, donc c'est gênant. Par conséquent, je vais vous présenter comment sortir toutes les notes au format html et les gratter avec Beautiful Soup.
Tout d'abord, sélectionnez toutes les notes avec «Commande + A». Exportez les notes à partir de là. Sélectionnez html comme format de sortie. Cette fois, enregistrez-le sous mynote sur votre bureau.
L'index.html de mynote est l'index de toutes les notes dans le fichier de sortie, et il existe un lien vers chaque fichier html, alors utilisez-le.
Comme procédure
C'est.
En premier lieu, le grattage consiste à extraire des informations spécifiques d'un site Web. Le fichier que vous avez récupéré précédemment n'est pas un site Web, mais il est au format html afin que vous puissiez le gratter. Il existe plusieurs modules python qui peuvent être récupérés, mais cette fois, j'utiliserai quelque chose appelé Beautiful Soup.
Installez avec Beautiful Soup avec pip.
$ pip install beautifulsoup4
La belle soupe est essentiellement utilisée comme suit.
import urllib2
from bs4 import BeautifulSoup
html = urllib2.urlopen("http://~ ~ ~")
soup = BeautifulSoup(html)
scrape = soup.find_all("a")
Veuillez consulter le document officiel pour plus de détails. http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Cette fois, nous n'utilisons que soup.get_text ()
, soup.find_all (" a ") ʻet
soup.get (" href ")`.
SQLAlchemy est un mappeur OR, qui est pratique qui vous permet d'interagir avec la base de données sans l'écrire en SQL. Installons avec pip.
$ pip install sqlalchemy
Maintenant que je suis prêt, je vais gratter.
Tout d'abord, créez une fonction qui extrait et renvoie uniquement la phrase après avoir spécifié l'url de la note.
def scrape_evernote(url):
note_url = "file:///(Répertoire des notes)" + url.encode('utf-8')
html = urllib2.urlopen(note_url)
soup = BeautifulSoup(html)
all_items = soup.get_text()
return "".join(all_items)
Les trois premières lignes créent un objet BeautifulSoup.
ʻAll_items = soup.get_text () pour obtenir le texte complet de l'URL de destination. Dans la partie suivante, les caractères qui peuvent être obtenus par
get_text ()` sont inclus dans le tableau caractère par caractère, donc tous les tableaux sont combinés en une chaîne de caractères.
Ensuite, créez une fonction pour enregistrer le texte extrait dans 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)
#Créer une session
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
#Obtenez l'URL de toutes les notes de l'index
index_url = "file:///(Répertoire des notes)/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()
Commencez par créer Base
.
Créez ensuite un modèle de la note.
class Evernote(Base):
__tablename__ = 'mynote'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
title = sqlalchemy.Column(sqlalchemy.String)
note = sqlalchemy.Column(sqlalchemy.String)
Cette fois, enregistrez simplement le titre et le contenu de la note.
Créez un emplacement de stockage et une session pour SQLite.
Après cela, récupérez le titre et l'url de chaque note dans ʻindex.html`. Liens vers chaque note dans index.html
<a href="URL de la note">Titre de la note</a>
Puisqu'il est configuré comme ʻindex_soup.find_all ("a") , toutes les balises sont acquises. Étant donné que chaque balise est stockée sous forme de tableau, retirez-la et récupérez l'url et le titre de la destination du lien à partir de la balise a. Extrayez le texte de cette URL en utilisant le
scrape_evernote ()` créé précédemment.
Enfin, validez et enregistrez dans SQLite.
Ceci termine l'extraction.
Si vous souhaitez générer une sortie vers des données txt au lieu d'une sortie avec SQLite
def scrape_and_save2txt():
file = open('evernote_text.txt', 'w')
#Obtenez l'URL de toutes les notes de l'index
index_url = "file:///(Répertoire des notes)/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()
Si oui, c'est possible. Bien sûr, vous pouvez également sortir au format csv.
Je l'ai écrit au début, mais la procédure générale est
Il est devenu. Cette fois, il ne s'agissait que de phrases, mais les images sont également enregistrées dans un dossier portant le même nom que le titre de la note. Si vous l'utilisez bien, vous pouvez extraire toutes les images dans evernote.
Recommended Posts