Question

J'essaie de supprimer une table HTML et de sauvegarder ses données dans une base de données. Quelles stratégies / solutions avez-vous trouvées utiles pour aborder ce programme?

Je suis plus à l'aise avec Java et PHP, mais une solution dans n'importe quelle langue serait utile.

EDIT: Pour plus de détails, l’UTA (système de bus de Salt Lake) affiche les horaires des bus sur son site Web. Chaque horaire apparaît dans un tableau comportant des stations dans l'en-tête et des heures de départ dans les lignes. Je voudrais parcourir les calendriers et enregistrer les informations dans la table sous une forme que je peux ensuite interroger.

Voici le point de départ des calendriers

.
Était-ce utile?

La solution

Tout dépend du degré de suppression de votre code HTML? Si c'est du XHTML valide, vous pouvez simplement utiliser quelques requêtes XPath dessus pour obtenir ce que vous voulez.

Exemple de xpath en php: http://blogoscoped.com/archive/2004_06_23_index.html # 108802750834787821

Une classe d'assistance pour insérer une table dans un tableau: http://www.tgreer.com/ class_http_php.html

Autres conseils

Il existe un livre intéressant sur ce sujet: Spidering Hacks de Kevin Hemenway et Tara Calishain .

J'ai constaté que les langages de script sont généralement mieux adaptés à ces tâches. Personnellement, je préfère Python, mais PHP fonctionnera aussi. Couper, décomposer et analyser des chaînes en Java est tout simplement trop de travail.

J’ai déjà essayé d’écraser l’écran, mais j’ai trouvé le système très fragile, en particulier avec du code généré de manière dynamique. J'ai trouvé un analyseur DOM tiers et je l'ai utilisé pour parcourir le code source avec des modèles de correspondance similaires à Regex afin de trouver les données dont j'avais besoin.

J'ai suggéré d'essayer de savoir si les propriétaires du site ont une API publiée (souvent des services Web) pour récupérer les données de leur système. Si non, alors bonne chance à vous.

Si vous voulez un formulaire sous forme de table csv, vous pouvez utiliser ceci: en utilisant python:

Par exemple, imaginez que vous souhaitiez effacer des citations forex au format CSV depuis un site tel que: fxoanda

alors ...

from BeautifulSoup import BeautifulSoup
import urllib,string,csv,sys,os
from string import replace

date_s = '&date1=01/01/08'
date_f = '&date=11/10/08'
fx_url = 'http://www.oanda.com/convert/fxhistory?date_fmt=us'
fx_url_end = '&lang=en&margin_fixed=0&format=CSV&redirected=1'
cur1,cur2 = 'USD','AUD'
fx_url = fx_url + date_f + date_s + '&exch=' + cur1 +'&exch2=' + cur1
fx_url = fx_url +'&expr=' + cur2 +  '&expr2=' + cur2 + fx_url_end
data = urllib.urlopen(fx_url).read()
soup = BeautifulSoup(data)
data = str(soup.findAll('pre', limit=1))
data = replace(data,'[<pre>','')
data = replace(data,'</pre>]','')
file_location = '/Users/location_edit_this'
file_name = file_location + 'usd_aus.csv'
file = open(file_name,"w")
file.write(data)
file.close()

une fois que vous l'avez dans ce formulaire, vous pouvez convertir les données en un formulaire de votre choix.

Au risque de déclencher une tempête de merde ici sur SO, je suggérerais que si le format de la table ne change jamais, vous pouvez vous en tirer, utilisez plutôt Regularexpressions pour analyser et capturer le contenu dont vous avez besoin.

pianohacker a ignoré le module HTML :: TableExtract , conçu exactement pour ce type de chose. Vous avez toujours besoin de LWP pour récupérer le tableau.

Ce serait de loin le plus simple avec Perl et les modules CPAN suivants:

CPAN étant le principal mécanisme de distribution des modules Perl, il est accessible en exécutant la commande shell suivante, par exemple:

 # cpan HTML :: Analyseur

Si vous utilisez Windows, les choses seront plus intéressantes, mais vous pouvez toujours le faire: http://www.perlmonks.org/?node_id=583586

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top