Budujemy scraper, który pobierze listę wszystkich spółek cypryjskich! [Python]

Budujemy scraper, który pobierze listę wszystkich spółek cypryjskich! [Python]

O scrapingu danych trochę już napisaliśmy. Przede wszystkim TUTAJ pokazaliśmy jak można pobierać dane w sposób automatyczny przy wykorzystaniu prostego pluginu Chrome. Wcześniej w TYM artykule jednocześnie opisaliśmy jak budowane są strony internetowe – w szczególności ich część wizualna. Wiedza ta jest bardzo przydatna przy kodowaniu swojego własnego scrapera. A o tym właśnie dzisiaj!

Co pobieramy – rejestr cypryjski

W celu przećwiczenia scrapingu danych zajmiemy się zgromadzeniem pełnej (!) bazy danych spółek cypryjskich dostępnych na stronie internetowej Cyprus Registry. Jak widzimy jest to strona z paginacją, a wszystkie dane spółek zostały zapisane na 9524 stronach. Zatem nasze dane wejściowe i wyjściowe to następujące URL:

https://cyprusregistry.com/companies?page=1
https://cyprusregistry.com/companies?page=9524

To bardzo ważne – musimy przewidzieć w kodzie iterację, która zbuduje nam pełną listę URL, z których ostatecznie będziemy pobierać dane spółek! 🙂

Python – jakie biblioteki wykorzystamy?

Tu odpowiedź jest bardzo prosta, bo cały proces też jest bardzo prosty. Wykorzystamy request do odpytywania strony internetowej, BeautifulSoup do parsowania danych html oraz pandas do zarządzania danymi w DataFrame. Brzmi strasznie? Nic bardziej mylnego. Oto początek naszego kodu:

import requests
from bs4 import BeautifulSoup
import pandas as pd

Następnie definiujemy kilka stałych wartości, do których będziemy się odwoływać w pętlach i różnych momentach naszego programu:

#bazowe url do analizy
base_url = "https://cyprusregistry.com/companies?page="

#strony do analizy
r1, r2 = 1, 9524

#puste listy do scrapingu danych
cyprusRegistry = []
companies = []
adresses = []
company_urls = []

I tworzymy listę zawierającą wszystkie adresy URL z właściwymi paginacjami (stronami) do analizy:

#lista z paginacją
def createList(r1, r2):
    return list(range(r1, r2 + 1))

paginationList = createList(r1, r2)

for i in paginationList:
    scraping_url = base_url + str(i)
    cyprusRegistry.append(scraping_url)

Zaczynamy scraping w naszym skrypcie Python – pętla

Po zdefiniowaniu i przygotowaniu powyższych danych została sama przyjemność – napisanie pętli, która odpali każdą stronę i pobierze z niej listę wyświetlanych spółek, adres rejestracji podmiotu oraz URL do szczegółowych danych o podmiocie. Pętla wygląda następująco:

#scraping
for url in cyprusRegistry:
    page = requests.get(url)
    soup = BeautifulSoup(page.content, "html.parser")
    for company in soup.find_all("h5", class_="mb-1"):
        nice_name = company.text
        companies.append(nice_name)
    for adress in soup.find_all("p", class_="mb-1"):
        nice_adress = adress.text
        adresses.append(nice_adress)
    for anchor in soup.findAll('a', class_="text-dark", href=True):
        company_urls.append(anchor['href'])
    print("Przeanalizowano " + str(r1)+ " stron")
    r1 +=1

Operacje na danych w Python – DataFrame

Koniec naszej operacji to zapisanie danych do struktury DataFrame i export do pliku Excel, który tworzy piękną bazę danych z cypryjskiego rejestru.

#konwersja do dataframe
cyprus_dataframe = pd.DataFrame(list(zip(companies, adresses, company_urls)),
              columns=['Nazwa','Adres', 'URL'])

#export do pliku XLSX
cyprus_dataframe.to_excel("Cyprus_Business_Register-1-9524.xlsx")

W efekcie działania skryptu powstaje plik XLSX, który zawiera wszystkie zarejestrowane na Cyprze spółki dostępne w rejestrze Cyprus Registry, ich adres oraz URL do szczegółowych informacji o podmiocie. Co zrobimy w kolejnym kroku? Pobierzemy wszystkie informacje o osobach związanych z tymi podmiotami! Ale to już w kolejnym artykule o scrapingu danych przy użyciu Pythona. Aby uruchomić skrypt wystarczy doinstalować niezbędne biblioteki poleceniem pip install i uruchomić w terminalu aplikację:

python3 osintquest_cydb.py

Pliki do pobrania

Dodatkowo udostępniamy Wam pobrany przez nasz skrypt rejestr spółek z Cypru oraz kod źródłowy całej aplikacji do analizy. Do boju osintowcy! 🙂

Zestawy rakietowe “Piorun” i amunicja – to Ukraina otrzyma od Polski

Zestawy rakietowe “Piorun” i amunicja – to Ukraina otrzyma od Polski

Sytuacja wokół Ukrainy wciąż jest napięta. Codziennie pojawiają się nowe informacje na temat ruch wojsk rosyjskich przy ukraińskiej granicy. W odpowiedzi NATO ostrzega Władimira Putina, że atak spotka się z reakcją. Mariusz Błaszczak, szef MON, poinformował w nocy z wtorku na środę, jakiej pomocy Polska udzieli Ukrainie. Kijów może liczyć na dostawę amunicji oraz przenośnych przeciwlotniczych zestawów rakietowych “Piorun” – podał minister obrony narodowej w mediach społecznościowych.

Twitter
Zestawy rakietowe “Piorun” i amunicja – to Ukraina otrzyma od Polski

Polska przekaże broń Ukrainie; Rosja sprowadza zapasy krwi na granicę z Ukrainą

Szef BBN Paweł Soloch poinformował, że Polska przekaże Ukrainie broń o charakterze defensywnym. Taka decyzja miała zapaść w porozumieniu z Andrzejem Dudą. Paweł Soloch podkreślił podczas briefingu prasowego, że podczas posiedzenia Rady Bezpieczeństwa Narodowego popłynął mocny, ponadpartyjny przekaz wobec sytuacji na Ukrainie.

PROPAGANDA WYKORZYSTUJE INFORMAJCE BBN:

Rosja rozpoczęła dostawy krwi i środków medycznych na granicę z Ukrainą – pisze Reuters, powołując się na trzech amerykańskich urzędników.

Zestawy rakietowe “Piorun” i amunicja – to Ukraina otrzyma od Polski

W Polsce odbyło się posiedzenie Rady Bezpieczeństwa Narodowego

28 stycznia 2021 r. odbyło się niejawne posiedzenie Rady Bezpieczeństwa Narodowego. Podczas spotkania, w którym wzięli udział m.in. przewodniczący klubów i kół parlamentarnych, omówiono bieżącą sytuację związaną z groźbą inwazji rosyjskiej na Ukrainę. – W tej chwili nie ma bezpośredniego, militarnego zagrożenia dla Polski – powiedział na wstępie Andrzej Duda. Prezydent Andrzej Duda po zakończeniu obrad podziękował za spotkanie i “za niezwykle konstruktywną atmosferę”. Dodał, że wszyscy obecni na posiedzeniu przedstawili swoje stanowisko. – Ja, pan premier i ministrowie w szczegółach przekazaliśmy informacje przedstawicielom klubów parlamentarnych i kół o tym, jaka jest obecnie sytuacja znana nam w przestrzeni międzynarodowej, i wokół Ukrainy i na Ukrainie i na Białorusi. Jak to wygląda z punktu widzenia bezpieczeństwa Polski, jakie działania są podejmowane, jak przebiegają rozmowy międzynarodowe – mówił Duda. Podziękował “za niezwykle odpowiedzialną, patriotyczną postawę jeżeli chodzi o polityków, którzy reprezentują nasze społeczeństwo”.

https://twitter.com/nowePSL/status/1487171503611424769?s=20&t=7cU1ho4AQHkLhkDUfy3BVA

Zestawy rakietowe “Piorun” i amunicja – to Ukraina otrzyma od Polski

Spotkanie czwórki normandzkiej w Paryżu; Stoltenberg wzywa Rosję do wycofania wojsk;

Przedstawiciele Ukrainy, Rosji, Francji i Niemiec we środę, 26 stycznia, rozmawiali w Paryżu przez osiem godzin i zgodzili się co do potrzeby wprowadzenia trwałego i bezwarunkowego zawieszenia broni w Donbasie. Choć Rosjanie uznali, że szczyt w Paryżu nie przyniósł wielkich postępów, zasugerowali, że możliwe będzie spotkanie przywódców negocjujących państw. Ukraina jest zadowolona z powrotu rozmów w formacie normandzkim i wyraziła nadzieję, że w przyszłości uda się dojść do porozumienia i doprowadzić do deeskalacji sytuacji na wschodzie kraju. Kolejne spotkanie normandziej czwórki – za dwa tygodnie w Berlinie.

KOMENTARZ: Normandzka czwórka (Format normandzki, ang. Normandy contact group) – grupa składająca się z przedstawicieli Ukrainy, Francji, Niemiec i Rosji powołana w celu rozstrzygnięcia wojny w Donbasie i kwestii przynależności państwowej Krymu.

TWITTER

Sekretarz generalny NATO Jens Stoltenberg poinformował, że NATO wysłało do Moskwy pisemną odpowiedź na jej żądania. – Po raz kolejny wzywamy Rosję do natychmiastowej deeskalacji sytuacji – zaapelował Stoltenberg. Dodał, że napięcie wokół Ukrainy wciąż rośnie.
– Jesteśmy gotowi wysłuchać obaw Rosji i zaangażować się z nią w rzeczywisty dialog (…) na temat zasad bezpieczeństwa europejskiego. (…) Rosja powinna jednak zaniechać demonstrowania siły, agresywnej retoryki i wrogich działań skierowanych przeciwko sojusznikom i innym państwom. Rosja powinna wycofać swoje wojska z Ukrainy, Gruzji i Mołdawii, gdzie są one rozlokowane bez zgody tych państw – oświadczył sekretarz generalny NATO.