Conas Sonraí Airgeadais Google a Scrape le Python

Tuairimí: 0

Tá infheisteoirí agus anailísithe an lae inniu ag baint úsáide as faisnéis Airgeadais Google ós rud é go bhfuil sé reatha agus cruinn. Is cosúil gurb é Google Finance an áit is fearr chun sonraí airgeadais reatha de gach cineál a bheith aige, go háirithe i gcás stoic mar aon le hinnéacsanna agus treochtaí margaidh ós rud é go dtugann sé níos mó sonraí faoi mhéadrachtaí airgeadais cuideachtaí. Is é Python an teanga is fearr le haghaidh scríobadh gréasáin. Cuideoidh an post seo leat foghlaim conas sonraí a bhailiú ó Google Finance ionas gur féidir leat na huirlisí anailíse airgeadais riachtanacha go léir a bheith agat.

Na leabharlanna riachtanacha a shuiteáil

Sula dtosaíonn tú, déan cinnte go bhfuil python suiteáilte agat ar do chóras. Beidh na leabharlanna de dhíth ort freisin: Iarrataí ar iarratais HTTP agus LXML a dhéanamh chun ábhar HTML na leathanach gréasáin a pharsáil. Chun na leabharlanna riachtanacha a shuiteáil, bain úsáid as na horduithe seo a leanas ar an líne ordaithe:

pip install requests
pip install lxml

Ansin, déanfaimid iniúchadh ar an bpróiseas céim ar chéim chun sonraí a bhaint as Google Finance:

Céim 1: An struchtúr HTML a thuiscint

Chun sonraí ó Google Finance a scríobadh, ní mór dúinn na heilimintí sonracha HTML a aithint ina bhfuil an fhaisnéis a bhfuil suim againn iontu:

  • Teideal: lonnaithe ag //div[@class="zzDege"]/text()
  • Praghas: Aimsithe ag //div[@class="YMlKec fxKbKc"]/text()
  • Dáta: lonnaithe ag //div[@class="ygUjEc"]/text()

Feidhmeoidh na habairtí XPath seo mar threoir chun na sonraí ábhartha a nascleanúint agus a bhaint as struchtúr HTML ar leathanaigh Airgeadais Google.

Ceart:

1.png

Praghas a fháil amach:

2.png

Dáta:

3.png

Céim 2: An fheidhm scraper a chur ar bun

Agus scraper á chur ar bun agat, tá sé ríthábhachtach díriú ar roinnt gnéithe tábhachtacha chun bailiú sonraí éifeachtúla agus slán a chinntiú.

Iarratas http a dhéanamh

Chun ábhar HTML a fháil ó láithreán gréasáin Google Finance, bainfimid úsáid as an Leabharlann Iarrataí. Cuireann an chéim seo tús leis an bpróiseas tríd an leathanach gréasáin a luchtú as a bhfuil sé i gceist againn sonraí a bhaint.

Tábhacht na gceanntásca cearta a úsáid i scríobadh

Tá sé thar a bheith tábhachtach na ceanntásca cearta a úsáid nuair a scríobhann an gréasáin, go háirithe an ceanntásc gníomhaire úsáideora. Tá úsáid ceanntásca riachtanach chun fíor -iarratas brabhsálaí a ionsamhlú a chuirfidh cosc ​​ar an suíomh do script uathoibríoch a aithint agus a stopadh. Déanann siad cinnte go bhfreagraíonn an freastalaí i gceart trí fhaisnéis ábhartha a thabhairt faoin iarratas. Ceanntásca cuí as láthair, d'fhéadfaí an t -iarratas a dhiúltú nó féadfaidh an freastalaí ábhar atá go hiomlán difriúil a thabhairt ar ais nó ábhar a sheachadadh i gcodanna a d'fhéadfadh srian a chur ar an ngníomhaíocht scríobtha gréasáin. Dá bhrí sin, cuidíonn ceanntásca a leagan síos go cuí le rochtain ar an láithreán gréasáin a choinneáil agus cinntíonn sé go bhfaigheann an scraper na sonraí cearta.

import requests

# Sainmhínigh na ceanntásca chun cuairt a thabhairt ar chuairt bhrabhsálaí agus seachain an freastalaí bac a chur ar an bhfreastalaí
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',  # Ná déan ceanntásc iarratais a rianú
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not/A)Brand";v="8.0.0.0", "Chromium";v="126.0.6478.114", "Google Chrome";v="126.0.6478.114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}

# Sainmhínigh URL an leathanach Airgeadais Google do BNP Paribas (Ticker BNP) ar mhalartú Euronext Paris (EPA)
url = "https://www.google.com/finance/quote/BNP:EPA?hl=en"

# Déan iarratas ar an HTTP a fháil chuig an URL leis na ceanntásca sonraithe
response = requests.get(url, headers=headers)

Tábhacht Proxies a úsáid

Agus Google Finance nó aon láithreán gréasáin á scríobadh ar scála, tá sé ríthábhachtach proxies a úsáid. Seo an fáth:

  • Seachain Toirmisc IP: Is minic a chuireann suíomhanna gréasáin cosúil le Google Finance bac ar rochtain ó sheoltaí IP a dhéanann an iomarca iarrataí i dtréimhse ghearr. Cabhraíonn seachvótálaithe le hiarratais a dháileadh ar fud ilsheoltaí IP, ag laghdú an seans go mbraitear agus go dtoirmisctear iad.
  • Príobháideacht fheabhsaithe: Cuireann úsáid seachvótálaithe sraith de anaithnideacht leis, ag cosaint do chéannacht agus do intinn agus sonraí á scríobadh.
# Sainmhínigh na Socruithe seachfhreastalaí
proxies = {
    'http': 'http://your_proxy_address:port',
    'https': 'https://your_proxy_address:port',
}

# Déan iarratas ar an HTTP a fháil chuig an URL leis na ceanntásca sonraithe agus na seachvótálaithe
response = requests.get(url, headers=headers, proxies=proxies)

Ag parsáil html le lxml

Nuair a bheidh an t -ábhar HTML faighte againn, ní mór dúinn é a pharsáil ag baint úsáide as an leabharlann LXML. Cuirfidh sé seo ar ár gcumas nascleanúint a dhéanamh tríd an struchtúr HTML agus na sonraí a theastaíonn uainn a bhaint amach:

Déantar an fheidhm ó LXML.html a allmhairiú chun ábhar HTML a pharsáil i réad eilimint. Parses an modh asstring freagartha.

from lxml.html import fromstring

# Ábhar HTML an fhreagra a pharsáil ag baint úsáide as modh LXML ó mhodh LXML
parser = fromstring(response.text)

Sonraí a bhaint le XPath

Anois, déanaimis sonraí sonracha a bhaint amach ag baint úsáide as abairtí xpath ón gcrann html parsáilte:

Aisghabhann an teideal teideal na hionstraime airgeadais ón HTML parsáilte. Aisghabhann an praghas an praghas stoic reatha. Aisghabhann an dáta an dáta. Tá an teideal, an praghas, agus an dáta eastósctha sa bhfoclóir Finance_Data. Cuirtear an foclóir seo i gceangal le liosta.

# Liosta chun sonraí aschuir a stóráil
finance_data_list = []

# Teideal na hionstraime airgeadais a bhaint
title = parser.xpath('//div[@class="zzDege"]/text()')[0]

# Praghas reatha an stoic a bhaint
price = parser.xpath('//div[@class="YMlKec fxKbKc"]/text()')[0]

# An dáta a bhaint amach
date = parser.xpath('//div[@class="ygUjEc"]/text()')[0]

# Foclóir a chruthú chun na sonraí eastósctha a stóráil
finance_data = {
    'title': title,
    'price': price,
    'date': date
}
#Sonraí a chur i gceangal le Finance_Data_List
finance_data_list.append(finance_data)

Láimhseáil agus stóráil sonraí

Chun na sonraí scríobtha a láimhseáil, b'fhéidir gur mhaith leat é a phróiseáil a thuilleadh nó é a stóráil i bhformáid struchtúrtha mar JSON:

Sonraíonn an t -athróg output_file ainm an chomhaid JSON ina sábhálfar sonraí (Finance_Data.json). Osclaíonn an Open (output_file, 'w') an comhad i mód scríbhneoireachta, agus scríobhann json.dump (Finance_Data_List, F, Indent = 4) an Finance_Data_List chuig an gcomhad le indentation 4-spás le haghaidh inléiteachta.

# Sábháil Finance_Data_List chuig comhad JSON
output_file = 'finance_data.json'
with open(output_file, 'w') as f:
    json.dump(finance_data_list, f, indent=4)

Iarratas Láimhseáil Eisceachtaí

Agus sonraí á scríobadh ó shuíomhanna gréasáin, tá sé tábhachtach eisceachtaí iarratais a láimhseáil chun iontaofacht agus stóinseacht do script scríobtha a chinntiú. Is féidir leis na hiarratais seo teip ar chúiseanna éagsúla amhail saincheisteanna líonra, earráidí freastalaí nó amanna ama. Soláthraíonn an leabharlann iarratais i Python bealach chun na cineálacha eisceachtaí seo a láimhseáil go héifeachtach mar a thaispeántar thíos:

try:
    # Iarratas GET a sheoladh chuig an URL
    response = requests.get(url)

    # Httperror a ardú le haghaidh drochfhreagraí (cóid stádais 4xx nó 5xx)
    response.raise_for_status()

except requests.exceptions.HTTPError as e:
    # Earráidí HTTP a láimhseáil (cosúil le 404, 500, etc.)
    print(f"HTTP error occurred: {e}")

except requests.exceptions.RequestException as e:
    # Aon eisceachtaí eile a d'fhéadfadh tarlú le linn na hiarrata a láimhseáil
    print(f"An error occurred: {e}")

Clúdaíonn an bloc triail an cód a d'fhéadfadh eisceachtaí a ardú. Seolann na hiarrataí (URL) iarratas GET. Seiceálann an freagra.raise_for_status () an cód stádais freagartha agus ardaíonn sé Httperror do chóid nár éirigh leo. Na hiarrataí seachas na hiarratais.httperror mar E: Gabhfaidh Eisceachtaí Httperror agus Priontaí an teachtaireacht earráide. Na hiarrataí seachas na hiarratais.exceptions.Requestexception mar E: gabhálacha eisceachtaí eile (m.sh., earráidí líonra, amanna ama) agus priontann sé an teachtaireacht earráide.

Cód iomlán

Anois, déanaimis gach rud a chomhtháthú chun ár bhfeidhm scraper a chruthú a fhaigheann, a pharsálann, agus a shroicheann sonraí ó il -URLanna Airgeadais Google:

import requests
from lxml.html import fromstring
import json
import urllib3
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()


# Liosta URLanna le scrape
urls = [
    "https://www.google.com/finance/quote/BNP:EPA?hl=en",
    "https://www.google.com/finance/quote/SPY:NYSEARCA?hl=en",
    "https://www.google.com/finance/quote/SENSEX:INDEXBOM?hl=en"
]

# Sainmhínigh ceanntásca chun cuairt a thabhairt ar chuairt bhrabhsálaí
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not/A)Brand";v="8.0.0.0", "Chromium";v="126.0.6478.114", "Google Chrome";v="126.0.6478.114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}

# Sainmhínigh Endpoint seachfhreastalaí
proxies = {
    'http': 'http://your_proxy_address:port',
    'https': 'https://your_proxy_address:port',
}

# Liosta chun sonraí scríobtha a stóráil
finance_data_list = []

# Athraigh trí gach URL agus sonraí scrape
for url in urls:
    try:
        # Iarratas GET a sheoladh chuig an URL
        response = requests.get(url, headers=headers, proxies=proxies, verify=False)
        
        # Httperror a ardú le haghaidh drochfhreagraí (cóid stádais 4xx nó 5xx)
        response.raise_for_status()
        
        # Ábhar HTML an fhreagra a pharsáil ag baint úsáide as modh LXML ó mhodh LXML
        parser = fromstring(response.text)
        
        # An teideal, an praghas, agus an dáta a bhaint
        title = parser.xpath('//div[@class="zzDege"]/text()')[0]
        price = parser.xpath('//div[@class="YMlKec fxKbKc"]/text()')[0]
        date = parser.xpath('//div[@class="ygUjEc"]/text()')[0]
        
        # Stóráil sonraí eastósctha i bhfoclóir
        finance_data = {
            'title': title,
            'price': price,
            'date': date
        }
        
        # Cuir an foclóir noto ar an liosta
        finance_data_list.append(finance_data)
    
    except requests.exceptions.HTTPError as e:
        # Earráidí HTTP a láimhseáil (cosúil le 404, 500, etc.)
        print(f"HTTP error occurred for URL {url}: {e}")
    except requests.exceptions.RequestException as e:
        # Aon eisceachtaí eile a d'fhéadfadh tarlú le linn na hiarrata a láimhseáil
        print(f"An error occurred for URL {url}: {e}")

# Sábháil Finance_Data_List chuig comhad JSON
output_file = 'finance_data.json'
with open(output_file, 'w') as f:
    json.dump(finance_data_list, f, indent=4)

print(f"Scraped data saved to {output_file}")

Aschur:

4.png

Tairgeann an treoir seo rang teagaisc cuimsitheach ar shonraí a scríobadh ó Google Finance ag baint úsáide as Python, in éineacht le leabharlanna cumhachtacha cosúil le `LXML` agus` iarrataí '. Leagann sé an bhunobair chun uirlisí sofaisticiúla a chruthú le haghaidh scríobadh sonraí airgeadais, ar féidir iad a úsáid chun anailís dhomhain a dhéanamh ar an margadh, monatóireacht a dhéanamh ar ghníomhaíochtaí iomaitheora, nó chun cinntí infheistíochta eolasacha a thacú.

Tuairimí:

0 tuairimí