Η εύρεση ενός κόμβου (ή κοντά σε αυτό) χρησιμοποιώντας XPath σε μη καλοσχηματισμένα HTML




Είμαι χρησιμοποιώντας XPath για τον εντοπισμό ενός κόμβου (ή κάτι κοντά σε αυτό) σε ένα πρότυπο που έχει μη-καλοσχηματισμένα HTML περίπου 10 επίπεδα βαθιά. (Όχι δεν είχα γράψει αυτό το HTML ... αλλά έχω αναλάβει να σκάψει μέσα από αυτό.) 


Μου φαίνεται να είναι σε θέση να ανακτήσει ένα XPath για το εν λόγω στοιχείο χρησιμοποιώντας το XPartner add-on για τον Firefox? Ωστόσο, μου δίνει μόνο την τοποθεσία στην ζωντανή περιοχή, και όχι στο πρότυπο που έχω δώσει. (Το πρότυπο είναι από μη-τυπική γλώσσα server-side scripting? Διαβάσει μια γλώσσα που χτίστηκε το σπίτι)


Υπάρχουν εργαλεία XPath ξέρετε ότι είναι ιδιαίτερα καλοί στο κουτσά-στραβά μέσω μη καλοσχηματισμένα HTML εκεί.
**Εκφράσεις XPath δεν μπορούν να αξιολογηθούν agaist μη wellformed έγγραφο XML** , η οποία είναι ακριβώς η περιγραφόμενη περίπτωση.


Είναι δυνατόν να γίνει αυτό σε δύο αλυσοδεμένος στάδια, το πρώτο εκ των οποίων είναι να μετατρέψει τον κώδικα HTML για να wellformed XML και στη συνέχεια το δεύτερο - να εφαρμόσει την έκφραση XPath.


Ως εκ τούτου, το ερώτημα θα μπορούσε να αναφέρεται ακριβέστερα ως «Πώς να μετατρέψετε HTML σε XML, έτσι ώστε οι εκφράσεις XPath μπορούν να αξιολογούνται με βάση το».


Εδώ είναι δύο καλά εργαλεία:


1. **[TagSoup](http://home.ccil.org/~cowan/XML/tagsoup/) , ένα πρόγραμμα ανοιχτού κώδικα** , είναι ένα Java και SAX - based εργαλείο, που αναπτύχθηκε από [**τον John Cowan**](http://home.ccil.org/~cowan/) . Αυτό είναι ένα SAX-συμβατό πρόγραμμα ανάλυσης γραμμένο σε Java που, αντί για την ανάλυση καλοσχηματισμένα ή έγκυρη XML, αναλύει HTML καθώς βρίσκεται σε άγρια κατάσταση: φτωχή, άσχημη και βίαιη, αν και αρκετά συχνά μακριά από σύντομη. TagSoup είναι σχεδιασμένο για ανθρώπους που έχουν να επεξεργάζονται αυτά τα πράγματα χρησιμοποιώντας κάποια ομοιότητα ενός ορθολογικού σχεδιασμού της εφαρμογής. Παρέχοντας μια διεπαφή SAX, επιτρέπει τυποποιημένα εργαλεία XML για να εφαρμοστεί ακόμη και το χειρότερο HTML. TagSoup περιλαμβάνει επίσης έναν επεξεργαστή γραμμής εντολών που διαβάζει αρχεία HTML και μπορεί να παράγει είτε καθαρά HTML ή καλοσχηματισμένα XML που είναι μια στενή προσέγγιση με XHTML. Taggle είναι ένα εμπορικό λιμάνι C ++ της TagSoup.
2. **[SgmlReader](http://code.msdn.microsoft.com/SgmlReader)** είναι ένα εργαλείο που αναπτύχθηκε από τη Microsoft για [**Chris Lovett**](http://www.lovettsoftware.com/) . SgmlReader είναι ένα XmlReader API σε οποιοδήποτε έγγραφο SGML (συμπεριλαμβανομένων ενσωματωμένη υποστήριξη για HTML). Ένα βοηθητικό πρόγραμμα γραμμής εντολών Παρέχεται επίσης η οποία εξάγει το καλά σχηματισμένες αποτέλεσμα XML. Κατεβάστε το αρχείο zip, συμπεριλαμβανομένης της αυτόνομο εκτελέσιμο και τον πλήρη πηγαίο κώδικα: [**SgmlReader.zip**](http://code.msdn.microsoft.com/SgmlReader/Release/ProjectReleases.aspx?ReleaseId=1442)
3. **[Το καθαρό XSLT 2.0 Αναλυτής της HTML](http://www.dcarlisle.demon.co.uk/htmlparse.xsl)** γραμμένο από [**τον David Καρλάιλ**](http://dpcarlisle.blogspot.com/) . Η ανάγνωση του κώδικα θα είναι μια μεγάλη άσκηση μάθησης για τον καθένα από εμάς.


Από την περιγραφή:


«D: htmlparse (συμβολοσειρά) δ: htmlparse (συμβολοσειρά, namespace, html-mode)


Η μορφή ένα επιχείρημα είναι ισοδύναμη με) δ: htmlparse (συμβολοσειρά, ' <http://ww.w3.org/1999/xhtml> ', true ()))


Αναλύει τη συμβολοσειρά ως HTML ή / και XML χρησιμοποιώντας κάποια ενσωματωμένη heuristics να) ελέγχου σιωπηρή άνοιγμα και το κλείσιμο των στοιχείων.


Δεν έχει πλήρη γνώση της HTML DTD, αλλά δεν έχει τον πλήρη κατάλογο των κενών στοιχεία και πλήρη κατάλογο των ορισμών οντότητας. Οι HTML οντότητες, και αναφορές χαρακτήρα δεκαδικό και δεκαεξαδικό όλες δεκτές. Οι σημείωση html-φορείς αναγνωρίζεται ακόμα κι αν html-mode = false ().


Τα ονόματα των στοιχείων lowercased (αν html-mode είναι αλήθεια ()) και τοποθετείται στο χώρο ονομάτων που καθορίζεται από την παράμετρο ονομάτων (που μπορεί να είναι «» για να υποδηλώσει όχι-ονομάτων, εκτός αν η είσοδος έχει explict δηλώσεις namespace, οπότε αυτά θα τιμηθεί .


Τα ονόματα ιδιοτήτων lowercased αν html-mode = true ()»


Διαβάστε μια πιο λεπτομερή περιγραφή [**εδώ**](http://www.dcarlisle.demon.co.uk/htmlparse.xsl) .
τελικα κατι καταφερα χαρη στο ‘‘xorg-x11-utils xdotool’’. :slightly\_smiling\_face:

(σε wayland δεν πρεπει να δουλεψει).

ubuntu:

sudo apt install xbindkeys x11-utils xdotool

fedora:

sudo dnf install xbindkeys xorg-x11-utils xdotool

(για ποντικι με 6+ πληκτρα.)

δημιουργια ενος (κρυφου) αρχειου σ… **Για την «ορθογραφία λάθος» μέρος (Μήπως εννοείτε)**


* Θα μπορούσατε να κάνετε κάποια `LIKE`ερωτήματα στο db π.χ. `LIKE %j%e%a%n%s%`, αλλά αν θέλετε να το κάνετε καλά, θα πρέπει να χρησιμοποιήσετε μια βιβλιοθήκη αναζήτησης όπως αυτό:


	+ <https://github.com/TomLingham/Laravel-Searchy>
	+ <http://tnt.studio/blog/did-you-mean-functionality-with-laravel-scout>



> 
> Μπορείτε να δημοσιεύσετε το αρχείο ρυθμίσεων στον κατάλογο της εφαρμογής σας και να παρακάμψετε τις ρυθμίσεις, εκτελώντας php τεχνίτη πωλητή: δημοσιεύει για να αντιγράψετε τις ρυθμίσεις στο φάκελο config σας όπως searchy.php
> 
> 
> Μπορείτε να ορίσετε το προεπιλεγμένο πρόγραμμα οδήγησης που θα χρησιμοποιηθεί για τις αναζητήσεις στο αρχείο ρυθμίσεων. Οι επιλογές σας (στην παρούσα φάση) είναι: ασαφή, απλό και Levenshtein.
> 
> 
> Μπορείτε επίσης να παρακάμψετε αυτές τις μεθόδους, χρησιμοποιώντας την ακόλουθη σύνταξη κατά την εκτέλεση μιας αναζήτησης:
> 
> 
> 


Με τον καθορισμό [Levenshtein απόσταση](https://en.wikipedia.org/wiki/Levenshtein_distance) μπορείτε να finetune πόσο μακριά μια λέξη μπορεί να είναι.


* Αν χρειάζεστε καλύτερη απόδοση θα πρέπει να εξετάσει κάτι σαν `solr`ή `elasticsearch`για το έργο αυτό.


<https://wiki.apache.org/solr/SpellCheckComponent>
<https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html>


**Για το τμήμα μετάφρασης**


Απλά θα πρέπει να έχει ένα λεξικό έτοιμο σε βάση δεδομένων ή εντοπισμό των αρχείων σας και εκτελέστε το χαμηλότερο σημείο εισόδου και αυτό. Αναμείνετε υψηλή φορές υπολογιστών τόσο για τη διόρθωση ορθογραφίας και της μετάφρασης στον κώδικά σας. Μόλις τελειώνεις κάθε μάθημα - εκεί που σου βγάζει τους πόντους XP - από κάτω δεξιά έχει ένα κουμπί "Συνέχεια" και από αριστερά "Επανάληψη μαθήματος". Στο "Επανάληψη μαθήματος" μπορείς να δεις όλες τις προτάσεις στις οποίες απάντησες στο συγκεκριμένο μάθημα, είτε σωστές είτε λάθος. από όσο γνωρίζω (με τα windows γενικά δεν το έχω) υποστήριξη για nfs υπάρχει μόνο στις επαγγελματικές εκδόσεις των windows 10. αλλά δεν νομίζω να υπάρχει κάποιο όφελος σε ταχύτητα η αξιοπιστία, ενώ το αντίθετο δεν θα με εξέπληττε.

[εικόνα]

[how to mount an nfs share using a windows 10 machi…](https://graspingtech.com/mount-nfs-share-windows-10/) Προσθέτοντας την `--decorate`επιλογή θα εμφανιστούν οι αναφορές που δείχνουν προς κάθε commit. Έτσι, για παράδειγμα, θα δείτε **HEAD** και **προέλευσης / HEAD** (ή οτιδήποτε άλλο) στις σωστές θέσεις.


Μπορούν ακόμη και να είναι σε αρκετά χρώματα, αν έχετε αυτό ενεργοποιηθεί.


PS. ευχαριστώ για να με κάνει να ελέγξετε αυτό - είναι πραγματικά πολύ ωραία, ειδικά με τον τρόπο που δείχνει επίσης διάφορες κρύπτες μου. <p>πρέπει να χρησιμοποιήσετε την επιλογή <code>-f</code>:<br> <code>-f/--form &lt;name=content&gt; specify http multipart post data (h)</code></p><p>δοκιμάστε αυτό:</p><pre><code>curl \ -f "userid=1" \ -f "filecomment=this is an image file" \ -f "image=@/home/user1/desktop/test.jpg" \ localhost/uploader.php </code></pre> Θα πρέπει να δώσετε περισσότερες πληροφορίες σχετικά με το περιβάλλον ανάπτυξής σας για να πάρετε μια συγκεκριμένη απάντηση.


Για παράδειγμα, με ένα C # έργο στο Visual Studio, μπορείτε να κάνετε δεξί κλικ στα Project-> Ιδιότητες και, στη συνέχεια, να συμπληρώσετε το πεδίο «Εντολή επιχειρήματα γραμμή» στην καρτέλα «Debug». [@stergios](/u/stergios) καλοσωρισες στην παρεα μας.

μπορεις να δοκιμασεις καποια αλλη ιστοσελιδα πχ το <https://vimeo.com> ή το [ted talks](https://www.ted.com/talks)

ο λογος γιατι προτεινω διαφορετικες ιστοσελιδες ειναι για να δω αν ειναι θεμα του browser ή αν ειναι θεμα καποιου codec που μπορει να λοιπει απο το συστημα σου.

παραλληλα ανοι… μια λύση είναι να χρησιμοποιήσεις την web έκδοση. θέλει chrome που νομίζω υπάρχει ακόμα στα 32bit. δυστυχώς δε μπόρεσα να το βρώ. θέλω να πω ο,τι δεν είδα πως το λάθος ήταν στη γραμμή 4.

κατέβασα τον netsurf τελικώς με πατέντα.

μετά από αυτό που έπαθα πριν με τον brave δε θέλω να ρισκάρω ξανά.

ισως αργότερα αλλά όχι τώρα.

edit: εκεί που εγκαθιστούσα web browsers και αφού έχουν προηγηθεί τα πα…