Treoir maidir le Sonraí Airgeadais Yahoo a Scrapáil le Python

Tuairimí: 0

Léiríonn an treoir seo conas sonraí a scrape ó Yahoo Finance ag baint úsáide as Python, ag úsáid na n -iarratas agus na leabharlanna LXML. Cuireann Yahoo Finance sonraí airgeadais fairsinge ar fáil mar phraghsanna stoic agus treochtaí margaidh, atá ríthábhachtach le haghaidh anailíse margaidh fíor-ama, samhaltú airgeadais, agus straitéisí infheistíochta uathoibrithe a dhéanamh.

Is éard atá i gceist leis an nós imeachta iarratais HTTP a sheoladh chun an t -ábhar leathanach gréasáin a aisghabháil, ag parsáil an HTML a fuarthas, agus ag baint sonraí sonracha ag baint úsáide as abairtí XPath. Cumasaíonn an cur chuige seo eastóscadh sonraí éifeachtúla agus spriocdhírithe, rud a ligeann d'úsáideoirí rochtain a fháil ar fhaisnéis airgeadais agus úsáid a bhaint as go dinimiciúil.

Uirlisí agus Leabharlanna

Beimid ag baint úsáide as na leabharlanna Python seo a leanas:

  • Iarrataí : Iarratais HTTP a sheoladh chuig láithreán gréasáin Yahoo Finance.
  • lxml : Chun an t -ábhar HTML a pharsáil agus sonraí a bhaint as XPath.

Sula dtosaíonn tú, cinntigh go bhfuil na leabharlanna seo suiteáilte agat:


pip install requests
pip install  lxml

Scrapáil Gréasáin le Python Mínithe

Anseo thíos, déanfaimid iniúchadh ar an bpróiseas parsála ar bhealach céim ar chéim, le samplaí cód le haghaidh soiléire agus éascaíocht tuisceana.

Céim 1: Iarratas a sheoladh

Is é an chéad chéim i scríobadh gréasáin iarratas HTTP a sheoladh chuig an sprioc URL. Bainfimid úsáid as an leabharlann iarratais chun é seo a dhéanamh. Tá sé ríthábhachtach ceanntásca cearta a chur san áireamh san iarratas chun fíor-bhrabhsálaí a aithris, rud a chabhraíonn le bunbhearta frith-bot a sheachaint.


import requests
from lxml import html

# Sprioc URL
url = "https://finance.yahoo.com/quote/AMZN/"

# Ceanntásca chun aithris a dhéanamh ar fhíor -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="99", "Google Chrome";v="127", "Chromium";v="127"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    '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/127.0.0.0 Safari/537.36',
}

# Seol an t -iarratas HTTP
response = requests.get(url, headers=headers)

Céim 2: Sonraí a bhaint le XPath

Tar éis an t -ábhar HTML a fháil, is é an chéad chéim eile na sonraí inmhianaithe a bhaint as XPath. Is teanga chumhachtach chumhachtach í XPath chun nóid a roghnú ó dhoiciméad XML, atá foirfe chun ábhar HTML a pharsáil.

Teideal agus Praghas :

scraping.png

Tuilleadh sonraí:

scraping2.png

Anseo thíos tá na habairtí XPath a úsáidfimid chun píosaí éagsúla sonraí airgeadais a bhaint:


# Parse an t -ábhar HTML
parser = html.fromstring(response.content)

# Sonraí a Bhaint Amach Ag baint úsáide as XPath
title = ' '.join(parser.xpath('//h1[@class="yf-3a2v0c"]/text()'))
live_price = parser.xpath('//fin-streamer[@class="livePrice yf-mgkamr"]/span/text()')[0]
date_time = parser.xpath('//div[@slot="marketTimeNotice"]/span/text()')[0]
open_price = parser.xpath('//ul[@class="yf-tx3nkj"]/li[2]/span[2]/fin-streamer/text()')[0]
previous_close = parser.xpath('//ul[@class="yf-tx3nkj"]/li[1]/span[2]/fin-streamer/text()')[0]
days_range = parser.xpath('//ul[@class="yf-tx3nkj"]/li[5]/span[2]/fin-streamer/text()')[0]
week_52_range = parser.xpath('//ul[@class="yf-tx3nkj"]/li[6]/span[2]/fin-streamer/text()')[0]
volume = parser.xpath('//ul[@class="yf-tx3nkj"]/li[7]/span[2]/fin-streamer/text()')[0]
avg_volume = parser.xpath('//ul[@class="yf-tx3nkj"]/li[8]/span[2]/fin-streamer/text()')[0]

# Priontáil na sonraí eastósctha
print(f"Title: {title}")
print(f"Live Price: {live_price}")
print(f"Date & Time: {date_time}")
print(f"Open Price: {open_price}")
print(f"Previous Close: {previous_close}")
print(f"Day's Range: {days_range}")
print(f"52 Week Range: {week_52_range}")
print(f"Volume: {volume}")
print(f"Avg. Volume: {avg_volume}")

Céim 3: Proxies agus ceanntásca a láimhseáil

Is minic a úsáideann láithreáin ghréasáin mar Yahoo Finance bearta frith-bot chun scríobadh uathoibrithe a chosc. Chun nach gcuirfear bac ort, is féidir leat seachvótálaithe a úsáid agus ceanntásca a rothlú.

Ag baint úsáide as seachvótálaithe

Feidhmíonn seachfhreastalaí mar idirghabhálaí idir do mheaisín agus an láithreán gréasáin Sprioc. Cabhraíonn sé le do sheoladh IP a mhaolú, rud a chiallaíonn go bhfuil sé níos deacra do shuíomhanna gréasáin a bhrath go bhfuil tú ag scríobadh.


# Sampla de sheachvótálaí a úsáid le samhail údaraithe IP
proxies = {
    "http": "http://your.proxy.server:port",
    "https": "https://your.proxy.server:port"
}

response = requests.get(url, headers=headers, proxies=proxies)

Ceanntásca Gníomhaire Úsáideora Rothlach

Is bealach éifeachtach eile é an ceanntásc gníomhaire úsáideora a rothlú chun braite a sheachaint. Is féidir leat liosta de na teaghráin ghníomhaire úsáideora coitianta a úsáid agus ceann a roghnú go randamach do gach iarratas.


import random

user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0",
    # Cuir níos mó teaghrán gníomhaire úsáideora anseo
]

headers["user-agent"]: random.choice(user_agents)

response = requests.get(url, headers=headers)

Céim 4: Sonraí a shábháil ar chomhad CSV

Mar fhocal scoir, is féidir leat na sonraí scríobtha a shábháil i gcomhad CSV le húsáid níos déanaí. Tá sé seo thar a bheith úsáideach chun tacair shonraí mhóra a stóráil nó chun anailís a dhéanamh ar na sonraí as líne.


import csv

# Sonraí le sábháil
data = [
    ["URL", "Title", "Live Price", "Date & Time", "Open Price", "Previous Close", "Day's Range", "52 Week Range", "Volume", "Avg. Volume"],
    [url, title, live_price, date_time, open_price, previous_close, days_range, week_52_range, volume, avg_volume]
]

# Sábháil le comhad CSV
with open("yahoo_finance_data.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

print("Data saved to yahoo_finance_data.csv")

Cód iomlán

Anseo thíos tá an script iomlán Python a chomhtháthaíonn na céimeanna go léir atá pléite againn. Áirítear leis seo iarratais a sheoladh le ceanntásca, ag baint úsáide as seachvótálaithe, sonraí a bhaint le XPath, agus na sonraí a shábháil ar chomhad CSV.


import requests
from lxml import html
import random
import csv

# Sampla URL le scrape
url = "https://finance.yahoo.com/quote/AMZN/"

# Liosta de na teaghráin ghníomhaire úsáideora le haghaidh ceanntásca rothlacha
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0",
    # Cuir níos mó teaghrán gníomhaire úsáideora anseo
]

# Ceanntásca chun aithris a dhéanamh ar fhíor -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="99", "Google Chrome";v="127", "Chromium";v="127"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'User-agent': random.choice(user_agents),
}

# Sampla de sheachvótálaí a úsáid
proxies = {
    "http": "http://your.proxy.server:port",
    "https": "https://your.proxy.server:port"
}

# Seol an t -iarratas HTTP le ceanntásca agus seachvótálaithe roghnacha
response = requests.get(url, headers=headers, proxies=proxies)

# Seiceáil an raibh an t -iarratas rathúil
if response.status_code == 200:
    # Parse an t -ábhar HTML
    parser = html.fromstring(response.content)

    # Sonraí a bhaint as XPath ag baint úsáide as XPath
    title = ' '.join(parser.xpath('//h1[@class="yf-3a2v0c"]/text()'))
    live_price = parser.xpath('//fin-streamer[@class="livePrice yf-mgkamr"]/span/text()')[0]
    date_time = parser.xpath('//div[@slot="marketTimeNotice"]/span/text()')[0]
    open_price = parser.xpath('//ul[@class="yf-tx3nkj"]/li[2]/span[2]/fin-streamer/text()')[0]
    previous_close = parser.xpath('//ul[@class="yf-tx3nkj"]/li[1]/span[2]/fin-streamer/text()')[0]
    days_range = parser.xpath('//ul[@class="yf-tx3nkj"]/li[5]/span[2]/fin-streamer/text()')[0]
    week_52_range = parser.xpath('//ul[@class="yf-tx3nkj"]/li[6]/span[2]/fin-streamer/text()')[0]
    volume = parser.xpath('//ul[@class="yf-tx3nkj"]/li[7]/span[2]/fin-streamer/text()')[0]
    avg_volume = parser.xpath('//ul[@class="yf-tx3nkj"]/li[8]/span[2]/fin-streamer/text()')[0]

    # Priontáil na sonraí eastósctha
    print(f"Title: {title}")
    print(f"Live Price: {live_price}")
    print(f"Date & Time: {date_time}")
    print(f"Open Price: {open_price}")
    print(f"Previous Close: {previous_close}")
    print(f"Day's Range: {days_range}")
    print(f"52 Week Range: {week_52_range}")
    print(f"Volume: {volume}")
    print(f"Avg. Volume: {avg_volume}")

    # Sábháil na sonraí chuig comhad CSV
    data = [
        ["URL", "Title", "Live Price", "Date & Time", "Open Price", "Previous Close", "Day's Range", "52 Week Range", "Volume", "Avg. Volume"],
        [url, title, live_price, date_time, open_price, previous_close, days_range, week_52_range, volume, avg_volume]
    ]

    with open("yahoo_finance_data.csv", "w", newline="") as file:
        writer = csv.writer(file)
        writer.writerows(data)

    print("Data saved to yahoo_finance_data.csv")
else:
    print(f"Failed to retrieve data. Status code: {response.status_code}")

Is bealach cumhachtach é sonraí Airgeadais Yahoo ag baint úsáide as Python chun bailiú na sonraí airgeadais a uathoibriú. Trí úsáid a bhaint as na hiarratais agus na leabharlanna LXML, mar aon le ceanntásca cuí, seachvótálaithe, agus bearta frith-bot, is féidir leat sonraí stoic a scríobadh agus a stóráil go héifeachtach le haghaidh anailíse. Chlúdaigh an treoir seo na bunghnéithe, ach cuimhnigh cloí le treoirlínte dlíthiúla agus eiticiúla agus láithreáin ghréasáin á scríobadh.

Tuairimí:

0 tuairimí