Σας ευχαριστώ πάρα πάρα πολύ για τις απαντήσεις σας.
Δηλαδή έκανα μεγάλο λάθος με τις κανονικές εκφράσεις έτσι; (
Αν και κατάφερα κάτι.. δεν ήταν ο καλύτερος και "πιο καλός προγραμματιστικά" τρόπος να το κάνω αυτό ; )
Παρόλα αυτά σας ευχαριστώ ιδιαίτερα, όσοι μου είπατε να χρησιμοποιήσω κανονικές εκφράσεις. Ήταν μια εμπειρία και ένα μάθημα που πείρα. Ευχαριστώ επίσης όμως, και εσάς που μου είπατε πόσο λάθος είναι και μου δώσατε μια απίστευτα χρήσιμη πληροφορία με επιχειρήματα που δεν την είχα βρει (
και δε ξέρω αν θα την έβρισκα ).
Πλέον αν και σε αυτή την επεξεργασία της απάντησης μου, έχω βρει σχεδόν την λύση, θέλω να αφήσω ένα σαν "χρονικό" της προσπάθειας να υλοποιήσω αυτό που θέλω, αλλά και
να μου πείτε αν η υλοποίηση μου είναι αυτή που θα κάνατε και εσείς.
Προσθήκη πρώτης απάντησης :
Για το beautiful soup όμως που λέτε, για κάποιο λόγο δε ξέρω, αλλά με μπερδεύει αρκετά.
Δε ξέρω πως να το χρησιμοποιήσω.
Μπορείτε σας παρακαλώ πολύ να με βοηθήσετε;
π.χ. από
μια σελίδα με αυτό τον κώδικα, θέλω να πάρω τα :
- ΑΝΑΚΟΊΝΩΣΗ 1
- ΑΝΑΚΟΊΝΩΣΗ 2
- ΑΝΑΚΟΊΝΩΣΗ 3
- ΑΝΑΚΟΊΝΩΣΗ 4
αλλά και του συνδέσμους προς αυτές τις σελίδες :
- news.php?sa=view_new&id=3937
- news.php?sa=view_new&id=3936
- news.php?sa=view_new&id=3935
- news.php?sa=view_new&id=3934
Πως θα το καταφέρω αυτό με το
BeautifulSoup ;
(
Εδώ έκανα μια δεύτερη προσπάθεια να διευκολύνω την ανάγνωση του κώδιμα, χωρίζοντάς τον με κενά. )
Ευχαριστώ πάρα πολύ.
- Ενημέρωση απάντησης : Κατάφερα με αυτόν τον κώδικα :
#!/usr/bin/env python3
#-*-coding: utf-8-*-
from bs4 import BeautifulSoup
import urllib.request
page = urllib.request.urlopen('https://www.site.gr/news.php')
html = BeautifulSoup(page)
center = html.find_all('center')
print(a)
Να φτάσω στο σημείο να παίρνω
αυτό εδώ. Από ότι βλέπω είναι μια λίστα που περιέχει η κάθε θέση της ένα πεδίο <center>..</center>, σωστά; Για
πιο καθαρά μπορείτε να το δείτε και εδώ.
(
Αν και με αυτό τον χαζό ίσος κώδικα, το τελευταίο στοιχείο της λίστας είναι αρκετά άκυρο.. νομίζω για πρώτα βήματα με την BeautifulSoup κάπως το παλεύω..)
- Ενημέρωση απάντησης : Τελικά φίλοι μου, είμαι πολύ χαρούμενος διότι κατάφερα να κάνω αυτό που ήθελα με αυτό τον κώδικα :
#!/usr/bin/env python3
#-*-coding: utf-8-*-
from bs4 import BeautifulSoup
import urllib.request
page = urllib.request.urlopen('https://www.site.gr/news.php')
html = BeautifulSoup(page)
center = html.find_all('center')
# Έτσι πείρα την λίστα "center", που η κάθε θέση της έχει ένα παιδίο <center>...</center>
for line in center:
for a in line.find_all('a'):
print (a)
print ("\nΑναλυτικό print!\n")
link_anakinosis = []
anakinosi = []
for line in center:
for link in line.find_all('a'):
link_anakinosis.append( link.get('href') )
anakinosi.append( link.get_text() )
for i in range(0,len(anakinosi)):
print (anakinosi[i], "-", link_anakinosis[i] )
Δείτε εδώ το αποτέλεσμα.
Ο τρόπος που το έκανα, πως σας φαίνεται;
Όσο για μία πρόταση, που μου λέτε να χρησιμοποιήσω το RSS, αντί να κάνω scrapping.
Αν και η συγκεκριμένη σελίδα δε βλέπω να έχει RSS, ποτέ δεν ασχολήθηκα ιδιαίτερα με ρο RSS, απλώς γνωρίζω τι είναι. Αν μπορεί κάποιος - έχει τον χρόνο και την ευχαρίστηση να μοιραστεί κάποιες γνώσεις πάνω στο RSS μαζί μας, θα ήταν μεγάλη η χαρά μου και η ευχαρίστηση.
Παρόλα αυτά, θέλω να σημειώσω τελικά, πως αν και στην αρχή η βιβλιοθήκη
BeautifulSoup μου έβγαζε κάτι σαν "
οχ.. τι είναι τώρα αυτό.. πως θα το καταλάβω και θα το μάθω..", στη πορεία με λίγο ψάξιμο και πειραματισμούς κατάφερα κάπως να την χρησιμοποιήσω.
Περιμένω τις πολύ ενδιαφέρουσες και ουσιώδεις απόψεις σας!
Σας ευχαριστώ και πάλι, πάρα πολύ!