Sveobuhvatan asinhroni web scraper dizajniran da prikuplja i organizuje novinske članke o Rio Tinto kompaniji sa srpskog sajta Informer.rs. Skener efikasno obrađuje više stranica sa člancima i izvozi podatke u formatiran Excel fajl.
- Asinhrono procesiranje: Koristi
aiohttpiasynciobiblioteke za brzo, istovremeno skeniranje - Organizacija podataka: Izdvaja naslove članaka, datume, vreme i kompletan sadržaj
- Excel izvoz: Automatski generiše formatirane Excel fajlove sa stilizovanim zaglavljima
- Pametno formatiranje:
- Automatsko prilagođavanje širine kolona i visine redova
- Profesionalno stilizovanje sa obojenim zaglavljima
- Prelamanje teksta za bolju čitljivost
- Hronološko sortiranje (najnoviji prvi)
- Rukovanje greškama: Robusno rukovanje izuzecima sa upravljanjem timeout-a
- Uklanjanje duplikata: Automatski filtrira duplikate članaka
- Windows kompatibilnost: Optimizovano za Windows sisteme sa UTF-8 enkodiranjem
- Python 3.7 ili novija verzija
- Internet konekcija
- Windows OS (optimizovano za Windows, ali može biti prilagođeno drugim sistemima)
- Klonirajte repozitorijum:
git clone https://github.com/GnuPixie/Informer-RT-scraping.git
cd Informer-RT-scraping- Instalirajte potrebne biblioteke:
pip install -r requirements.txtJednostavno pokrenite glavni skript:
python Informer_Rio_Tinto.pyMožete modifikovati sledeća podešavanja u glavna_funkcija():
pocetna_stranica: Broj početne stranice (zadato: 1)krajnja_stranica: Broj krajnje stranice (zadato: 18)maksimalno_istovremenih_zahteva: Ograničenje istovremenih zahteva (zadato: 50)izlazni_fajl: Ime izlaznog Excel fajla (zadato: "Informer_RioTinto_Kompilacija.xlsx")
# U glavna_funkcija():
pocetna_stranica = 1
krajnja_stranica = 10 # Skeniraj prvih 10 stranica
maksimalno_istovremenih_zahteva = 30 # Smanji broj istovremenih zahteva
izlazni_fajl = "Rio_Tinto_Clanci_Prilagodjen.xlsx"Skener generiše Excel fajl sa sledećom strukturom:
| Datum i vreme | Naslov | Sadržina |
|---|---|---|
| 2024-10-09 08:42 | Naslov članka | Kompletan sadržaj članka... |
- Formatirana zaglavlja: Podebljani beli tekst na plavoj pozadini
- Automatski prilagođene kolone: Optimalno dimenzionisane na osnovu sadržaja
- Prelamanje teksta: Dugačak sadržaj je pravilno prelomljen
- Sortirani podaci: Članci sortirani po datumu (najnoviji prvi)
- Čist sadržaj: Uklanja reklame, povezane članke i druge nepoželjne elemente
- Skenira određene stranice Rio Tinto tag-a na Informer.rs
- Izdvaja URL-ove članaka, datume i vremena
- Automatski uklanja duplikate članaka
- Pojedinačno posećuje svaki URL članka
- Izdvaja naslov članka i glavni sadržaj
- Filtrira nepoželjne elemente (reklame, povezane članke, itd.)
- Elegantno rukuje timeout-ima i greškama
- Organizuje podatke koristeći pandas DataFrame
- Formatira datume za Excel kompatibilnost
- Sortira članke hronološki
- Čisti i validira podatke
- Kreira Excel fajl sa openpyxl bibliotekom
- Primenjuje profesionalno stilizovanje
- Automatski prilagođava formatiranje za čitljivost
- Čuva finalni formatirani fajl
Za filtriranje dodatnih nepoželjnih elemenata, modifikujte nepozeljni_selektori listu u skeniraj_sadrzaj_clanka():
nepozeljni_selektori = [
'div.related-news',
'div.banner-mobile-single-news',
'your-custom-selector' # Dodajte vaš selektor ovde
]Modifikujte stilizovanje u stilizuj_i_preimenuj_zaglavlja() funkciji:
font_zaglavlja = Font(bold=True, color="FFFFFF") # Font zaglavlja
popuna_zaglavlja = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid") # Boja pozadineSkener uključuje sveobuhvatno rukovanje greškama:
- Upravljanje timeout-ima: 20 sekundi timeout za svaki zahtev
- Provera HTTP statusa: Validira status kodove odgovora
- Validacija podataka: Osigurava da sadržaj članka postoji pre obrade
- Konflikti Excel fajla: Upozorava ako je izlazni fajl već otvoren
- Mrežni problemi: Elegantno rukuje problemima sa konekcijom
- "Greška pri kreiranju Excel fajla": Uverite se da izlazni Excel fajl nije otvoren u drugom programu
- "Nisu pronađeni članci": Proverite internet konekciju i verifikujte da li je sajt dostupan
- "Greške enkodiranja": Skripta automatski rukuje UTF-8 enkodiranjem za srpske karaktere
- "Previše zahteva": Smanjite vrednost
maksimalno_istovremenih_zahteva
Za detaljniji izlaz, skripta automatski ispisuje napredak za svaki skeniran članak.
- Skener je specifično dizajniran za Informer.rs Rio Tinto tag stranice
- Poštuje strukturu sajta kakva je bila u vreme razvoja
- Skripta uključuje ograničavanje brzine da bi izbegao preopterećivanje servera
- Svi srpski karakteri su pravilno rukiovani sa UTF-8 enkodiranjem
- Forkujte repozitorijum
- Kreirajte svoju feature granu (
git checkout -b feature/NovaFunkcionalnost) - Commitujte svoje izmene (
git commit -m 'Dodaj novu funkcionalnost') - Pushujte u granu (
git push origin feature/NovaFunkcionalnost) - Otvorite Pull Request
Ovaj projekat je licenciran pod MIT licencom - pogledajte LICENSE fajl za detalje.
Ovaj alat je namenjen edukativnim i istraživačkim svrhama. Molimo vas da osigurate usklađenost sa robots.txt fajlom sajta i uslovima korišćenja prilikom skeniranja podataka. Uvek poštujte ograničenja brzine i budite obzirni prema resursima servera.
Napravljeno sa ❤️ za prikupljanje i analizu podataka