Wednesday 16 August 2017

Python Stock Options


Gisteraand het ek getik het die volgende Dit het gewerk in orde. Ek het net die data van 200 iets van die 400 iets simbole Ek het in die lêer, maar dit trek die opsies data vir diegene 200 iets net mooi. Vanoggend, ek gaan na die kode weer uit te voer (markte oop vir byna 'n uur) en ek kry niks nie Ek loop 'n bietjie van 'n toets: Ek kry hierdie fout: En hierdie inhoud van die ingelegde lêer: Niks het verander oornag op my einde. laaste ding wat ek gedoen het, was te red en gesluit. Eerste ding wat ek gedoen het nadat wakker is dit hardloop again. I stel belang in die doen van ekonometriese analise op finansiële instrumente. Die belangrikste hangup ek in die gesig gestaar is dat daar nie 'n goeie gratis hulpbronne (ten minste wat ek ken) vir historiese opsies data. Om dié rede wil ek my eie persoonlike databasis van historiese opsies pryse te skep. Ek het hierdie projek afgebreek word in drie hoof hekkies: uit te vind hoe om opsies data te kry van binne luislang Pick 'n data stoor formaat Automatiseer die versameling van die daaglikse data Aan opsies data in Python Gedurende die somer het ek het 'n paar vrye tyd en saam met my pa om 'n belegging model te skep. Terwyl dit is 'n baie eenvoudige model, hierdie post is oor die bou van 'n databasis, so ek sal nie in detail hier. Dit is voldoende om te sê dat ek nodig het om 'n manier om opsies data te kry van Yahoo Finansies vind. Dit was 'n unieke uitdaging, want in teenstelling met aandele data of data uit ander bronne soos Fred opsies data nie die geval is 'n gerieflike aflaai na CSV knoppie op enige plek op die webwerf. Teen die tyd dat ek die lees van die uitstekende boek Python vir data-analise deur Wes McKinney en het 'n idee vir hoe om te implementeer 'n basiese web kruiper die html op yahoo ontleed en die data terug in 'n luislang vriendelike formaat. Lang storie kort, ek het 'n paar kode om dit te doen en dit het sy weg na weergawe 0.9 van die pandas biblioteek (as jy vertroud is met pandas Arent en jy werk met data in Python jy moet beslis check dit uit). Nou net hierdie paar opdragte is nodig om opsies data van Yahoo Finansies kry: Die oproepe en sit voorwerpe is pandas DataFrames dat dieselfde inligting wat jy sal vind op die Yahoo Finansies bladsy vir Apple Inc. opsies bevat. Pluk die lêer formaat in die pluk van 'n lêer formaat wat ek het twee hoof oorwegings: grootte van die lêer en spoed waarteen dit geskryf kan word / te lees. Om dit te toets Ek het 'n eenvoudige script wat gegenereer 'n ewekansige 4000 deur 4000 Numpy verskeidenheid en gedefinieer funksies vir die skryf en lees dat data op verskillende lêer formate. Die formate wat ek gekies het om mee te werk was CSV, hdf5 (.h5), en MatLab (.mat). Hieronder is die skrif wat ek gebruik om die toets uit te voer: Nadat ek hierdie kode het ek afgedank net tot iPython en hardloop die lêer (filetest. py) en gebruik die timeit magie om te sien hoe lank dit geneem het elk van die drie metodes om lees en skryf die data. Die tydsberekening resultate, tesame met die finale lêer groottes word opgesom in die tabel hieronder: Dit is maklik om te sien dat die soort hdf5 lêer is die beste een te kies vir my doeleindes. Ek wil graag om daarop te let dat die rede die hdf5 lêer formaat is 1/2 van die grootte van die. mat lêer, is omdat die dtype in die. h5 lêer is 'n 32 bit float terwyl die. mat dtype is 'n 64 bit float. Maar vir voorraad opsies wat ons net oor die algemeen / omgee data uit twee desimale plekke so die 32 bit presisie is baie. Outomatisering van die data herwinning Die finale stap om hierdie databasis begin was om die data herwinning proses te outomatiseer. Om dit te doen wat ek gebruik die gewilde UNIX skedulering instrument cron. Ek hardloop OSX 10.8 Mountain Lion, en by verstek in 10.8 die cron instrument is afgeskakel. Om dit op te los ek net gehardloop die volgende opdrag in die terminale: Hierdie opdrag skep die / etc / crontab lêer (indien dit nie die geval is reeds bestaan) en kry dit gereed is vir gebruik deur cron. Ek is nie van plan om 'n gedetailleerde verduideliking vir hoe om cron hier gebruik gee (as ek nog redelik nuut by dit self), maar googlen vir dit wat jy baie voorbeelde en tutoriale sal gee. Ek sal egter gee die lyn in my crontab lêer wat die script voer: Die volgende stap was om die script Ek sou cron oproep het skryf. Dit blyk onder. Ek het cron loop hierdie script op 'n bepaalde tyd elke week-dag en vul die hdf5 lêer. Die gevolglike lêer sal 'n sub-struktuur soos hierdie te hê: Die notasie CTICKmm-jj staan ​​vir 'n koopopsie (C), 'n gegewe ENKELE (merk), en die verstryking van die opsie (mm-jj). Binne elk van die datastelle is daar drie kolomme: trefprys, laaste prys op opsiekontrak, en volume in laaste verhandelingsdag. Na die hardloop hierdie script vir een nag, die gevolglike hdf5 data lêer was 7,648648 MB. As ek toelaat dat hierdie lêer aan elke werkdag hardloop vir 'n jaar, sal die finale grootte van die lêer onder 2 GB. Nie sleg nie As jy wil graag meer inligting oor hoe ek vorder ENKELE name of wat funksionaliteit Options is in pandas 0.10 of vroeër los 'n kommentaar en ek sal my bes doen om te reageer. Awesome Ek het dit altyd om so iets te doen nie, want ek wil 'n paar van my strategieë backtest. Jy moet waarskynlik verander 39from opsies voer Options39 om 39from pandas. io. data invoer Options39, maar anders as wat jou script werk baie goed. Sou jy bereid wees om die opsie data you39ve ingesamel dusver kon ek die guns beurt deur op te tree as 'n back-up vir die uitvoer van die script in die geval dat jy ooit verbinding verloor vir 'n paar dae te deel. Ek is die oorweging van ongeveer toets met behulp van pryse wat deur middel van Black8211Scholes, maar werklike data is natuurlik beter. Bly jy hou van die script. Ek het eintlik nie meer vertoon die lêer elke nag so ek don39t te veel data het. Anders I39d gelukkig wees om dit te deel met jou. Met betrekking tot die state invoer. Ek is die skrywer van die klas Options in pandas. Ten tyde van die skryf van hierdie blog post 'n paar van die funksies wat ek gebruik in die script hadn39t is saamgesmelt in 'n vrygestel weergawe van pandas, so ek het my plaaslike weergawe (in 'n lêer met die naam opsies) waarop ek op grond van die pandas weergawe FYI: Daar is eintlik 'n paar API veranderinge gebeur met die klas Options binne pandas nou. As die veranderinge die manier een van die ander bydraers het voorgestel gebeur, kan baie van die kode in hierdie script uitgediende wees. Op die heel minste, dit moet nog steeds begin mense met wie ek is in die proses van die opstel van 'n groot afgeleides databasis. Die ontleding van Weblinks is almal gereed. Waar ek 'n bietjie verlore is hoe om die databasis van alle individuele opsies in so 'n manier wat berekeninge soos SKEW, ens in staat stel om sonder elke keer om die berekening te doen met die hand kies die individuele opsies te skep. Hoe om sulke generiese verwysings maak. Ek is 'n bietjie hier verloor en wil uit te sorteer wat eerste voor jy gaan voort met die skepping data. Ek glo die korrekte volgorde in die terugkeer tuple is wan, noem aapl. getoptionsdata (). Hey Martin, jy is reg. Toe ek aanvanklik die opsies versamel kode vir pandas bygevoeg, ek het getoptionsdata terugkeer eerste noem. Nie seker wanneer / hoekom iemand dit verander. Ek opgedateer die kode in die pos aan die korrekte wan gebruik, oproepe nou bestel. Ek al hierdie sal baie handig wees in staat is om opsies pryse af te laai nie. Om mee te begin ek met behulp van die script wat jy hierbo verskaf (pretty much). Ek het pandas 0.13.1, maar dit lyk heeltemal gebreek. Foute met die volgende reël: rawcalls option. getforwarddata (months100, callTrue, putFalse, nearFalse, abovebelow6). Sedert ek wil al opsie data Ek dink kry ek die getforwarddata metode gebruik. Die ander metodes lyk net ondersteuning kry 'n bepaalde maand. Die fout is nogal lank, maar die afgelope paar lyne is: lêer quot / usr / local / lib / python2.7 / dist-pakkette / pandas / io / parsers. pyquot, lyn 1653, in nextline samel StopIteration StopIteration Is daar iemand weet hoe om los dit ook Ek hardloop Ubuntu Linux. Ek dink weergawe 0.11 van Pandas is ietwat werk, al is dit nie al die opsie pryse sou kry. Ek is nie seker hoe om pit gebruik om af te skaal op hierdie punt nie so ek waarskynlik vas probeer weergawe kry 0.13.1 werk. Hey Anonymous (jammer don39t weet jou naam, of as dit Anonymous - wat is awesome) Jammer dat hierdie funksies behoorlik aren39t werk. Ek het hierdie kode sowat 'n jaar gelede en ten tyde van hierdie werk sonder enige probleme. Pandas is onder swaar ontwikkeling en dit blyk dat sedert die tyd Ek het hierdie kode, die API gegaan trog 'n breek veranderinge. Ongelukkig het ek don39t tyd nou moet deurgaan en verander die kode van hierdie post sodat dit werk met 0.13. Ek kan sê dat al die in hierdie post beskryf funksionaliteit nog bestaan ​​met v0.13, maar 'n paar van die metode handtekeninge kan verander. Ek glo dat die docstrings vir elke metode van die klas Options genoeg om jou 'n goeie idee oor wat moet verander gee moet uiteengesit word. jy kan dit hier vind: GitHub / pydata / pandas / blob / Master / pandas / io / data. pyL545-L905 As jy voel daarvoor en hoef uiteindelik die maak van die nodige veranderinge, laat my asseblief weet en ek sal werk om die cODE om hulle te weerspieël. P. s. As jy dit te probeer en is 'n harde tyd, post hier weer en I39ll probeer om 'n bietjie leiding te gee. Ek is besig met 'n ander projek, maar basies het ek net het 'n paar veranderinge dinge loop te kry. Vir eenvoud ek die veranderinge wat gemaak is net data. py. Ek dink die inmonth en inyear indekse is verkeerd bereken. Ook, in sommige gevalle raam terug Geen. raam terugkeer Geen veroorsaak die ineenstorting. As iemand het die tyd die kode moet word opgedateer om net navraag vir opsies data wat in die tyd maand reeks werklik bestaan ​​geslaag. Ek is nie seker hoe om hierdie inligting van die HTML ontleed. Op die oomblik is dit sal bevraagteken Yahoo vir elke maand van data selfs wanneer daar geen opsies wat beskikbaar is vir daardie maand / jaar vir die getforwarddata metode. Hier is die Linux ewenaar uitset vir die veranderinge wat ek gemaak: diff pandas / io / data. py pandas.01 / io / data. py 25d24 Dit DEBUG Ware 538,541d536 Dit LT as (Len (data) 0): lt terugkeer Geen LT 590,595c585 Dit probeer: Dit self. symbol symbol. upper () Dit behalwe: Dit msg quotsymbol moet 'n geldige stringquot Dit verhoog ValueError (msg) Dit --- GT self. symbol symbol. upper () 860,866c850,861 Dit LT inyears Dit want Ek, m in opsom (inmonths): Dit jaar (m-1) / 12 LT Mon m - years12 Dit inyears. append (yearsCURYEAR) Dit inmonthsimon --- GT inyears CURYEAR (maande 1) gt gt uitvind hoe baie van die items in inmonths verby 12 GT aan veranderings 0 GT want ek in reeks (maande): GT as inmonthsi GT 12: GT inmonthsi - 12 GT aan veranderings 1 gt gt verander die ooreenstemmende items in die lys inyears. GT want ek in reeks (1, aan veranderings 1): GT inyears-i 1 875,878c870,873 Dit want ek in reeks (maande): Dit m2 inmonthsi Dit y2 inyearsi Dit as DEBUG: druk quotGetting s: s / squot (self. simbool, m2, y2) --- GT voor aankoms op ma in die reeks (maande): GT m2 inmonthsmon GT y2 inyearsmon GT 892,895d886 Dit as raam is een: Dit as DEBUG: Druk 39. geen data39 Dit voortgaan Dit Hi, Dankie vir jou goeie werk. Dit lyk asof dit op die oomblik is gebreek - miskien 'n uitleg / skedule verandering op yahoo (it39s dat tableloc 13 in die oproep om getoptiondata ()) I39ll ontfout dit wanneer ek tyd het, here39s die besonderhede tot dusver: Gekoppel aan pydev debugger (bou 135,1057 ) Stapelspoor (mees onlangse oproep laaste): Lêer quot / usr / share / pycharm / helpers / pydev / pydevd. pyquot, lyn 1733, in debugger. run (setup39file39, Geen, Geen) lêer quot / usr / share / pycharm / helpers /pydev/pydevd. pyquot, uit te voer lyn 1226, in aanloop pydevimports. execfile (lêer, globals, locals) die script lêer quot / huis / Chris / ontwikkel / src / handel / options. pyquot, reël 5, in wan, noem AAPL. getoptionsdata (expirydate (2015, 1, 16)) lêer quot / usr / lib / python2.7 / dist-pakkette / pandas / io / data. pyquot, lyn 630, in getoptionsdata self. getcalldata) lêer quot / usr / lib /python2.7/dist-packages/pandas/io/data. pyquot, lyn 748, in getputdata terugkeer self. getoptiondata (maand, jaar, verstryking, 13, 39puts39) lêer quot / usr / lib / python2.7 / dist - pakkette / pandas / io / data. pyquot, lyn 673, in getoptiondata quot foundquot. format (tableloc, ntables)) IndexError: Table plek 13 ongeldig, 3 tafels gevind uit pandas. io. data invoer opsies uit DATETIME datum invoer AAPL Options ( 39AAPL39, quotyahooquot) plaas, doen 'n beroep aapl. getoptionsdata (expirydate (2015, 1, 16)) IN3: invoer pandas In4: pandas. version Out4: 390.13.139 Hi, dankie vir die kommentaar. Hierdie kode is nou gebreek as gevolg van veranderinge in die Yahoo Finansies API. Ek dink die pandas ontwikkelaars het die oorspronklike kode Ek aan hulle gegee het. Kyk die betrokke bespreking hier: GitHub / pydata / pandas / trek / 8631 Hi Spencer verskoning vir die anonieme vraag, maar: As jy hierdie program hardloop vir elke ENKELE in jou lys van NASDAQ en NYSE simbole, hoe lank was die aanloop tyd vir 'n hele iterasie Anonymous - geen probleem. Hierdie roetine neem nogal 'n lang tyd om te hardloop. Waarskynlik op die einde van 6-8 uur. Dit kan versnel nogal 'n bietjie deur verskeie versoeke op 'n tyd met behulp van die threading en Queue modules in die standaard biblioteek. Ek het 'n voorbeeld om dit te doen met gereelde aandele data hier: gist. github / spencerlyon2 / 8a90d9fdffd15e3ecddb Spencer - Ek is baie nuut in Python en ontwikkeling in die algemeen, maar vind dit 'n kragtige en fassinerende met die bietjie navorsing / werk wat ek gedoen het. Tot dusver het ek saam 'n baie eenvoudige program om iets soortgelyks te doen. Dit is wat ek tot dusver: invoer DATETIME as dt invoer pandas as PD invoer Numpy as NP van pandas. io. data invoer opsies uit pandas invoer DataFrame invoer h5py as H5 num 0 newdatapd. DataFrame () terwyl num Dit tickers. size: probeer: itickers39Symbol39num opsies opsies (i, quotyahooquot) data options. getoptionsdata () newdatanewdata. append (data), behalwe: slaag druk num numnum1 In my ENKELE lys Ek het 6280 simbole of so, en ek het gevind dat die getoptionsdata voer baie vinniger as die getalldata metode. Op die oomblik is dit loop in ongeveer 3 uur. My doel is om te sny wat deur 1/6. Dit is nog steeds in die baie basiese stadiums nie, maar dit werk en versamel die data vir filmpjes dat dit bevat. Indien u enige wenke of voorstelle aan prestasie I39m verbeter al ore. Ek ken 'n herhaling struktuur mag nie die mees doeltreffende, maar alles vir my is trial and error. As dit triviale en / of 'n dom vraag wat ek vra om verskoning, Weereens, I39m nuwe en leer. Ek sou dink dat die bottelnek (stadigste deel) van hierdie program is die herwinning van die data van die web. Met behulp van die tou en threading gereedskap in die standaard biblioteek soos ek in die voorbeeld wat ek 'n skakel geplaas het om waarskynlik die beste manier om dit te deel spoed. Nog 'n relatief eenvoudige opsie om te doen parallel data herwinning is nie 'n funksie wat die data verkry vir 'n enkele lys skryf. Dan kan jy iets gebruik soos IPython parallel met die funksie te karteer oor die lys van filmpjes in parallel. 'N Voorbeeld van die gebruik van die kaart in parallel kan hier gevind word: ipython. org/ipython-doc/2/parallel/paralleldemos By the way, die enkele lus hier is beslis nie wat neem hierdie kode 'n lang tyd om te hardloop - so don39t bekommernis oor dit. I39m jammer, maar ek haven39t besoek hierdie spesifieke kode in meer as 2 jaar. Pandas beweeg redelik vinnig, so dit unsurprising dat die kode in hierdie post doesn39t werk. Ek don39t tans die tyd om die script te ontfout, maar ek sou raai kyk na die pandas dokumentasie vir die huidige opsieprys skraap funksies. Jy kan vind dit hier pandas. pydata. org/pandas-docs/stable/remotedatayahoo-finance-options~~V. Vir ENKELE lyste. Ek was besig om hulle uit hierdie twee URLs: Ek don39t weet so baie oor programmering, maar ek het 'n baie van die jaarlikse simbool lêers van intradata. co het, maar ek moet byvoorbeeld jaar 2012-2015 hê in een en dieselfde lêer. Want ek wil dit uit te karteer in my sagteware soos 'n uitgebreide grafiek Is dit moontlik om te doen met hierdie scriptOptions Pryse in Python Deur Michael Saal-Moore op 7 September 2012 Verskonings vir daardie gebrek aan updates, ek besig is besig met 'n opsies pryse biblioteek in Python. Ek het tot dusver daarin geslaag om my eerste Pad Afhanklike Asiatiese opsie pricer skep en dit is uiteindelik die verskaffing van my met die korrekte resultate. Dit is nie heeltemal gereed vir implementering omdat dit optimalisering uit te voer op 'n aanvaarbare spoed op my bediener nodig het. Alhoewel C is die oorheersende taal vir 'opsie prysing, het ek besluit om te sien hoe ek sou vaar vervaardiging van 'n all-Python gebaseer biblioteek. Nie net sal dit verbeter my Python vaardighede, maar dit sou 'n eenvoudige integrasie van die biblioteek in die perseel toe te laat. Die biblioteek, wat ek voorlopig noem PyQuant, is baie eenvoudig op die oomblik. Dit bestaan ​​uit twee hoofkomponente, 'n stel van geslote-vorm oplossings vir Vanilla noem / wan en die Digitals en 'n basiese Monte Carlo pricer wat pryse die Double-Digitals en Power Options. Met verloop van tyd sal Ek jag af of put geslote-vorm oplossings vir alle opsies wat ek kan, maar nou is ek geniet die ontwikkeling van die Monte Carlo oplosser. Die geslote vorm oplossings staatmaak op twee statistiese funksies - die normale waarskynlikheidsdigtheidsfunksie funksie en die kumulatiewe normaalverdeling funksie. 'N numeriese benadering tot die CNDF kan gevind word in 1. Trouens, baie van die geslote vorm oplossings word in die teks, en dit is waar ek hulle van verkry. Met die NPDF n CNDF Ek was in staat om oplossings vir die Vanilla Oproepe en sit, asook die algemene Grieke bereken. Delta, Gamma, Rho, Vega en Theta. Im nog besig met geslote vorm oplossings vir die digitale opsies. Die Monte Carlo-gebaseerde oplossings werk anders. Daar is 'n module wat al die pay-off voorwerpe vir elke tipe opsie bevat - Bel, Put Stuur, Digitale Call ens Nog 'n module winkels opsie voorwerpe. In die geval van die opsie Vanilla, vir 'n periode en 'n pay-off is nodig. Die staking is vervat in die pay-off voorwerp, wat kode resuability verseker vir beide pay-offs en opsies. Die finale module sluit Monte Carlo enjins wat 'n groot verskeidenheid van ontwikkelinge voorraad pad (wat gebaseer is op Meetkundige Brown Motion) te bereken en gebruik dit om 'n verwagte pay-off van die opsie te bereken. Die slagspreuk is verdiskonteer teen die risikovrye koers en dit bied die prys. Op hierdie stadium is dit bestryk duur om weer uit te voer die Monte Carlo pricer wanneer die verandering van 'n inset. Daar is 'n paar maniere om dit te optimaliseer. Die eerste is om gebruik te maak van Scipy maak. 'n Python wetenskaplike biblioteek. Dit sluit baie van die optimalisering strategieë - 'n blik op hierdie artikel oor Performance Python. sy prestasie in vergelyking met C kan jy net verras. Die tweede is om werklik te skryf 'n toegewyde C biblioteek wat genoem kan word uit Python. Maar dit is in stryd met die idee om 'n Python afgeleide pryse biblioteek. 1 - Joshi, M. die konsepte en praktyk van finansiële wiskunde. Cambridge University Press Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansing funds. Learn Quant vaardighede As jy 'n handelaar of 'n belegger en wil graag 'n stel kwantitatiewe handel vaardighede te bekom, is jy op die regte plek. Die handel met Python kursus sal u voorsien van die beste gereedskap en praktyke vir kwantitatiewe handel navorsing, insluitende funksies en skrifte geskryf deur kundige kwantitatiewe handelaars. Die kursus gee jou maksimum impak vir jou belê tyd en geld. Dit fokus op praktiese toepassing van ontwikkeling te handel eerder as teoretiese rekenaarwetenskap. Die kursus sal vinnig betaal vir homself deur spaar jou tyd in handleiding verwerking van data. Jy sal meer tyd ondersoek jou strategie en implementering van winsgewende bedrywe. Natuurlik oorsig Deel 1: Basics Jy sal leer hoekom Python is 'n ideale hulpmiddel vir kwantitatiewe handel. Ons sal begin deur die oprigting van 'n ontwikkeling omgewing en sal dan stel jy die wetenskaplike biblioteke. Deel 2: Hantering van die data Leer hoe om data uit verskillende gratis bronne soos Yahoo Finansies, CBOE en ander terreine te kry. Lees en skryf verskeie data formate, insluitend CSV en Excel-lêers. Deel 3: Navorsing oor strategieë Leer om PL en gepaardgaande prestasie statistieke soos Sharpe en Onttrekking bereken. Bou 'n handel strategie en sy prestasie te optimaliseer. Veelvuldige voorbeelde van strategieë word in hierdie deel. Deel 4: Gaan lewendige Hierdie deel is gesentreer rondom Interaktiewe Brokers API. Jy sal leer hoe om realtime voorraad data en plek live bestellings te kry. Baie van die voorbeeld kode Die kursusmateriaal bestaan ​​uit notaboeke wat teks saam met interaktiewe kode soos hierdie een bevat. Jy sal in staat wees om te leer deur interaksie met die kode en pas dit om jou eie smaak. Dit sal 'n groot vertrekpunt om te skryf jou eie strategieë Terwyl sommige onderwerpe word in groot detail te help om die onderliggende konsepte verstaan, in die meeste gevalle sal jy nie eens nodig om jou eie lae-vlak-kode skryf, as gevolg van ondersteuning deur bestaande oop wees - Bron biblioteke. TradingWithPython biblioteek kombineer baie van die funksies bespreek in hierdie kursus as 'n gereed-om-te gebruik funksies en sal deur die loop gebruik. Pandas sal u voorsien van al die swaar-opheffing krag wat nodig is in die data knars. Al die kode word onder die BSD lisensie, om die gebruik daarvan in kommersiële toepassings te Kursus gradering 'n vlieënier van die kursus was gehou in die lente van 2013, dit is wat die studente het om te sê: Matej goed ontwerpte kursus en goeie afrigter. Beslis die moeite werd om sy prys en my tyd Lave Jev natuurlik geweet sy dinge. diepte van dekking was perfek. As Jev so iets loop weer, Siek wees die eerste om aan te meld. John Phillips jou kursus het regtig my spring begin oorweeg luislang vir voorraadstelsel analysis. Python Pragtige sop Voorbeeld: Yahoo Finansies skraper Python bied 'n baie kragtige en maklik om gereedskap te gebruik vir skraap webwerwe. Een van Luislange nuttige modules webtuistes skraap staan ​​bekend as Beautiful sop. In hierdie voorbeeld goed voorsien u met 'n pragtige Sop byvoorbeeld bekend as 'n web skraper. Dit sal die data van 'n Yahoo Finansies bladsy oor die voorraad opsies te kry. Die orde as jy dit nie weet niks oor aandele-opsies, die belangrikste ding is dat die webwerf het 'n tafel van inligting wat jy kan sien hieronder wat wed soos om te gebruik in ons program. Hier is 'n lys vir Apple Computer voorraad opsies. Eerstens moet ons die HTML bron vir die bladsy kry. Pragtige sop gewoond die inhoud vir ons af te laai, kan ons dit doen met Luislange urllib module, een van die biblioteke wat standaard kom met Python. Haal die Yahoo Finansies Page gtgtgt sop. findAll (teks AAPL130328C00350000) 0. ouer. ouer. ouer LT tr gt lt td nowrap nowrap GT Dit a href /q/opsAAPLampampampk110.000000 GT Dit sterk GT 110.00 LT / strong GT Dit / a gt lt / td GT Dit td GT Dit a href / qsAAPL130328C00350000 GT AAPL130328C00350000 Dit / a gt lt / td GT Dit td align reg GT Dit b GT 1.25 Dit / b GT Dit / td GT Dit td align reg GT Dit span id yfsc63AAPL130328C00350000 GT Dit b styl kleur: 000000 GT 0.00 Dit / b GT Dit / span gt lt / td GT Dit td align reg GT 0.90 Dit / td GT Dit td align reg GT 1.05 Dit / td GT Dit td align reg GT 10 LT / td GT Dit td align reg GT 10 LT / td GT Dit / tr gt Bingo. Dit is nog steeds 'n bietjie slordig, maar jy kan al die inligting wat ons nodig het te sien is daar. As jy al die dinge in hakies te ignoreer, kan jy sien dat dit is net die data van die een ry. x. teks vir x in y. ouer. inhoud Hierdie kode is 'n bietjie dig, so laat neem dit uitmekaar stuk vir stuk. Die kode is 'n lys begrip binne 'n lys begrip. Kom ons kyk na die innerlike mens eers: Dit maak gebruik van BeautifulSoup s findAll funksie om al die HTML-elemente te kry met 'n td tag, 'n klas van yfnch en 'n nowrap van nowrap. Ons het dit, want dit is 'n unieke element in elke tafel inskrywing. As ons net gekry td s met die klas yfnch ons sewe elemente per tafel inskrywing sou gekry het. Nog 'n ding om daarop te let is dat ons die eienskappe draai in 'n woordeboek, want klas is een van Luislange voorbehou woorde. Uit die tabel hierbo sou dit hierdie keer: lttd nowrap nowrap GT LTA href /q/opsAAPLampampampk110.000000 GT ltstronggt 110.00 LT / stronggt Dit / AGT Dit / tdgt Ons moet een vlak hoër te kry en dan kry die teks van al die kind nodes van hierdie nodes ouer. Dis wat hierdie kode nie:

No comments:

Post a Comment