Zephyrnet-logo

Webscraping van handige 50 historische gegevens met behulp van Python

Datum:

Dit artikel is gepubliceerd als onderdeel van het Data Science-blogathon.

In India heeft een pandemie meer particulieren en overheden aangetrokken. sectoren om thuiswerken over te nemen. Hierdoor hadden mensen meer tijd om onderzoek te doen naar beleggingen in aandelen. Veel start-ups en apps kwamen in beeld voor het beleggen in aandelen. Veel mensen wilden verschillende tools en technieken gebruiken om aandelen te analyseren.

Als je codeerkennis hebt en 50 handige historische gegevens wilt analyseren en inzichten wilt krijgen, dan is dit artikel iets voor jou.

Zodra we over de juiste historische gegevens beschikken, kunnen we trends analyseren en beginnen met beleggen in aandelen.

Denkt u er nu over na hoe u 50 handige historische gegevens kunt krijgen?

Er zijn een aantal websites die handige historische gegevens bieden.

Hieronder vindt u websites die historische gegevens verstrekken.

1. https://www1.nsindia.com/

2. https://financiën.yahoo.com/

3. https://in.investing.com/

In dit artikel zullen we ons concentreren op investing.com. We zullen zien hoe u historische Nifty 50-gegevens van deze website kunt extraheren.

ll schrap handige 50 gegevens door het datumbereik te passeren. Nadat we het datumbereik hebben gepasseerd, krijgen we de onderstaande gegevens.

Handig 50

Webscrapingtools of -modules die worden gebruikt om gegevens uit handige gegevens te halen

Selenium wordt ook gebruikt voor: web schrapen. Selenium vereist een webdriver om met de browser te communiceren. Hier gebruiken we de Chrome-browser. Selenium gebruikt een Chrome-stuurprogramma als webstuurprogramma om de Chrome-browser te besturen.

De aanvraagbibliotheek of module wordt gebruikt voor het doen van HTTP-verzoeken aan de site.

  • Mooie soep

De BeautifulSoup-bibliotheek of -module die wordt gebruikt voor het ontleden van HTML-documenten.

Hieronder staan ​​​​de stappen die moeten worden gevolgd voor het webschrapen van handige historische gegevens van: investing.com

  1. Een Chrome-stuurprogramma installeren of downloaden in Windows en Linux.
  2. Chrome-stuurprogramma laden met behulp van Selenium's webstuurprogramma voor webschrapen.
  3. Startdatum en einddatum voorbereiden voor het ophalen van gegevens van investing.com.
  4. URL maken voor het extraheren van gegevens van investing.com.
  5. Het seleniumstuurprogramma initialiseren om gegevens op te halen.
  6. De inhoud van de pagina ophalen met Beautiful Soup.
  7. Extraheren van de vereiste kolommen voor Nifty-gegevens.

Een Chrome-stuurprogramma installeren of downloaden in Windows en Linux

Download voor Windows de vereiste versie van het Chrome-stuurprogramma via de onderstaande link en pak het Chrome-stuurprogramma uit de zip-map en bewaar het op dezelfde plaats waar uw python-script zich bevindt

https://chromedriver.chromium.org/downloads

Volg voor Linux de onderstaande stappen:

1. Voer de onderstaande opdracht uit om ubuntu bij te werken

apt-get update # om ubuntu bij te werken om apt install correct uit te voeren

2. Voer de onderstaande opdracht uit om het chrome-stuurprogramma te installeren:

apt installeer chromium-chromedriver

3. Kopieer het chrome-stuurprogramma naar de bin-map

cp /usr/lib/chromium-browser/chromedriver /usr/bin

4. Voeg een pad toe aan het systeempad

sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')

5. Voeg onderstaande chrome-opties toe aan webdriver

chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage')

Selenium's webstuurprogramma voor webscraping

Gebruik voor Windows de onderstaande opdracht om de webdriver van selenium te laden:

stuurprogramma = webstuurprogramma.Chrome()

Gebruik voor Linux de onderstaande opdracht om het webstuurprogramma van selenium te laden:

driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)

Startdatum en einddatum voorbereiden voor het ophalen van gegevens

Hieronder vindt u de code voor het voorbereiden van de start- en einddatum. We zullen gegevens verzamelen vanaf het begin van het jaar tot de huidige dag.

De einddatum is de huidige dag en het begin van het jaar is de startdatum.

vandaag = datum.vandaag() einddatum = tijd.mktime(today.timetuple()) einddatum = int(einddatum) starts_day_of_current_year = datetime.now().date().replace(maand=1, dag=1) starts_day_of_current_year stdate= time.mktime(starting_day_of_current_year.timetuple()) stdate=int(stdate)

URL maken voor het extraheren van gegevens van investing.com

Nu gaan we een URL maken voor het ophalen van gegevens van investing.com

url="https://in.investing.com/indices/sp-cnx-nifty-historical-data?end_date={}&st_date={}".format(enddate,stdate)

We geven de startdatum en einddatum door aan de URL.

Selenium-stuurprogramma initialiseren om gegevens te krijgen

Hieronder vindt u de code die de seleniumdriver aanroept om gegevens van investing.com te krijgen

De onderstaande code roept de Chrome-browser op door de bovenstaande URL door te geven.

stuurprogramma.get(url)

Handig 50

De inhoud van de pagina verkrijgen met Beautiful Soup

Hieronder vindt u de code die wordt gebruikt om de pagina-inhoud van de URL te krijgen die we hebben doorgegeven met parameters.

#Get Page Content Data content = driver.page_source soup = BeautifulSoup(content)

Vereiste kolommen extraheren voor Nifty 50-gegevens

Nu zullen we een lijst opstellen en de vereiste kolommen extraheren als een lijst

We initialiseren een lijst voor elke vereiste kolom en zoeken naar de vereiste kolom in de inhoud die we van de website hebben gekregen.

Kolom #Laaddatums
date=[] voor een in soup.findAll('td', attrs={'class':'col-rowDate'}): date_txt=a.find('span', attrs={'class':'text' }) datum.append(date_txt.text)

De uitvoer van de bovenstaande opdracht is zoals hieronder weergegeven:

We gaan op zoek naar de benodigde gegevens en voegen deze toe aan de lijst.

We zullen vergelijkbare activiteiten uitvoeren op alle vereiste velden.

#Loading Sluitingsprijzen close=[] voor een in soup.findAll('td', attrs={'class':'col-last_close'}): close_txt=a.find('span', attrs={'class' :'text'}) close.append(close_txt.text) #Bezig met laden van open prijzen open=[] voor een in soup.findAll('td', attrs={'class':'col-last_open'}): open_txt= a.find('span', attrs={'class':'text'}) open.append(open_txt.text) #Loading High Prices high=[] for a in soup.findAll('td', attrs={ 'class':'col-last_max'}): high_txt=a.find('span', attrs={'class':'text'}) high.append(high_txt.text) #Loading Low Prices low=[] voor een in soup.findAll('td', attrs={'class':'col-last_min'}): low_txt=a.find('span', attrs={'class':'text'}) laag. toevoegen(low_txt.text)

DataFrame voorbereiden en gegevens transformeren

We zullen een DataFrame voorbereiden met de vereiste kolommen

## DataFrame voorbereiden df_nifty = pd.DataFrame({'Date':date,'Open':open,'High':high,'Low':l':close})

Hieronder vindt u de voorbeeldgegevens na conversie naar DataFrame.

Als u de bovenstaande schermafbeelding van gegevens ziet, heeft de datum niet de juiste indeling en zijn de gegevens van de andere kolommen in tekenreeks.

Nu gaan we de gegevens opmaken. Verwijder eerst komma's in de kolomgegevens en converteer ze vervolgens naar het vereiste formaat, zoals string to date en string to float.

df_nifty['Date'] = df_nifty['Date'].str.replace(r",","") df_nifty['Ddatetime(df_nifty.Date , format = '%b %d %Y') df_nifty=df_nifty. drop_duplicates(subset="Datum") #droping dubbele data data = df_nifty data['Close']=data['Close'].str.replace(r",","").astype('float') data[ 'Open']=data['Open'].str.replace(r",","").astype('float') data['High']=data['High'].str.replace(r ",","").astype('float') data['Low']=data['Low'].str.replace(r",","").astype('float')

Voorbeeldgegevens worden hieronder weergegeven:

Conclusie

Samenvattend hebben we in dit artikel geleerd hoe we handige gegevens kunnen extraheren uit: investing.com met behulp van webschrapen in python. We hebben een basiskennis gekregen van het installeren van Selenium in Windows en Linux. We hebben ook een basisidee gekregen over het vinden van een element uit de inhoud met behulp van BeautifulSoap en het opslaan ervan in een lijst. We hebben ook een basisidee om alle vereiste kolommen te combineren in een DataFrame. We hebben ook een basisidee over het opschonen van de gegevens en het converteren naar het juiste formaat.

Nu hebben we handige historische dagelijkse gegevens en kunnen we beginnen met het analyseren van opwaartse en neerwaartse trends.

We kunnen gegevens oprollen naar wekelijks, maandelijks en driemaandelijks.

Wat kunnen we hierna doen?

  • EDA van de geëxtraheerde handige gegevens.

Start verkennende gegevensanalyse van gegevens door verschillende grafieken te plotten, te controleren op ontbrekende gegevens, te controleren op uitschieters, correlatie te controleren, enz.

  • Zet de geëxtraheerde gegevens om in tijdreeksen.

Converteer de geëxtraheerde gegevens naar tijdreeksgegevens met behulp van verschillende bibliotheken.

  • Gebruik meerdere modellen voor prognoses.

Zodra we gegevens in tijdreeksen hebben omgezet, kunnen we meerdere modellen gebruiken voor prognoses, zoals Facebook's NeuralProphet, AUTO ARIMA, Long Short Term Memory (LSTM) enz.

Hieronder vindt u de GitHub-link met code voor zowel Windows als Linux.

Fork de repo en implementeer de code dienovereenkomstig.

https://github.com/bashamsc/nifty_web_scraping

De in dit artikel getoonde media zijn geen eigendom van Analytics Vidhya en worden naar goeddunken van de auteur gebruikt.

spot_img

Laatste intelligentie

spot_img