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.
Beimid ag baint úsáide as na leabharlanna Python seo a leanas:
Sula dtosaíonn tú, cinntigh go bhfuil na leabharlanna seo suiteáilte agat:
pip install requests
pip install lxml
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.
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)
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 :
Tuilleadh sonraí:
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}")
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ú.
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)
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)
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")
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