Manthan Koolwal
7 mai 2020 – 5 min citește

În acest post, vom învăța web scraping cu python. Folosind python vom răzui Yahoo Finance. Aceasta este o sursă excelentă de date despre bursă. Vom codifica un scraper pentru aceasta. Folosind acest scraper, veți putea extrage date despre acțiuni ale oricărei companii de pe Yahoo Finance. După cum știți, îmi place să fac lucrurile destul de simple, pentru asta voi folosi, de asemenea, un web scraper care vă va crește eficiența răzuirii.

De ce acest instrument? Acest instrument ne va ajuta să răzuim site-uri web dinamice folosind milioane de proxy-uri rotative, astfel încât să nu fim blocați. De asemenea, oferă o facilitate de compensare. Folosește chrome fără antet pentru a răzui site-urile web dinamice.

În general, răzuirea web este împărțită în două părți:

  1. Obținerea datelor prin efectuarea unei cereri HTTP
  2. Extragerea datelor importante prin analizarea DOM-ului HTML

Biblioteci & Instrumente

  1. Beautiful Soup este o bibliotecă Python pentru extragerea de date din fișiere HTML și XML.
  2. Requests vă permite să trimiteți foarte ușor cereri HTTP.
  3. instrument de răzuire web pentru a extrage codul HTML al URL-ului țintă.

Setup

Setup-ul nostru este destul de simplu. Trebuie doar să creați un dosar și să instalați cererile Beautiful Soup &. Pentru crearea unui dosar și instalarea bibliotecilor, tastați comenzile date mai jos. Presupun că ați instalat deja Python 3.x.

mkdir scraper
pip install beautifulsoup4
pip install requests

Acum, creați un fișier în interiorul acelui dosar cu orice nume doriți. Eu folosesc scraping.py.

În primul rând, trebuie să vă înregistrați pentru API-ul scrapingdog. Acesta vă va oferi 1000 de credite GRATUITE. Apoi, trebuie doar să importați Cererile Beautiful Soup & în fișierul dvs. ca aceasta.

from bs4 import BeautifulSoup
import requests

Ce vom răzui

Iată lista de câmpuri pe care le vom extrage:

  1. Previous Close
  2. Open
  3. Bid
  4. Ask
  5. Day’s Range
  6. Day’s Range
  7. 52 Week Range
  8. Volume
  9. Avg. Volum
  10. Capitalizare bursieră
  11. Beta
  12. Raport PE
  13. EPS
  14. Taxă de profit
  15. Dividendele viitoare &Reducere
  16. Ex.Dividend & Data
  17. 1y target EST

Yahoo Finance

Pregătirea hranei

Acum, din moment ce avem toate ingredientele pentru a pregăti scraperul, ar trebui să facem o cerere GET la URL-ul țintă pentru a obține datele HTML brute. Dacă nu sunteți familiarizați cu instrumentul de răzuire, v-aș îndemna să parcurgeți documentația acestuia. Acum vom răzui Yahoo Finance pentru date financiare folosind biblioteca de cereri, așa cum se arată mai jos.

r = requests.get("https://api.scrapingdog.com/scrape?api_key=<your-api-key>&url=https://finance.yahoo.com/quote/AMZN?p=AMZN&.tsrc=fin-srch").text

acest lucru vă va oferi un cod HTML al acelui URL țintă.

Acum, trebuie să folosiți BeautifulSoup pentru a analiza HTML.

soup = BeautifulSoup(r,'html.parser')

Acum, pe întreaga pagină, avem patru etichete „tbody”. Suntem interesați de primele două, deoarece în prezent nu avem nevoie de datele disponibile în interiorul celei de-a treia & a patra etichete „tbody”.

eticheta „tbody” de pe site

În primul rând, vom afla toate aceste etichete „tbody” folosind variabila „soup”.

alldata = soup.find_all("tbody")

tr & tag-uri td în interiorul tbody

După cum puteți observa că primele două „tbody” au 8 tag-uri „tr” și fiecare tag „tr” are două tag-uri „td”.

try:
table1 = alldata.find_all("tr")
except:
table1=Nonetry:
table2 = alldata.find_all("tr")
except:
table2 = None

Acum, fiecare etichetă „tr” are două etichete „td”. Prima etichetă td este formată din numele proprietății, iar cealaltă are valoarea acelei proprietăți. Este ceva de genul unei perechi cheie-valoare.

date în interiorul tag-urilor td

În acest moment, vom declara o listă și un dicționar înainte de a începe o buclă „for”.

l={}
u=list()

Pentru a simplifica codul, voi rula două bucle „for” diferite pentru fiecare tabel. Prima pentru „table1”

for i in range(0,len(table1)):
try:
table1_td = table1.find_all("td")
except:
table1_td = None l.text] = table1_td.text u.append(l)
l={}

Acum, ceea ce am făcut este să stocăm toate etichetele td într-o variabilă „table1_td”. Și apoi stocăm valoarea primului & al doilea tag td într-un „dicționar”. Apoi, introducem dicționarul într-o listă. Deoarece nu dorim să stocăm date duplicate, vom face ca dicționarul să fie gol la sfârșit. Pași similari vor fi urmați pentru „table2”.

for i in range(0,len(table2)):
try:
table2_td = table2.find_all("td")
except:
table2_td = None l.text] = table2_td.text u.append(l)
l={}

Apoi, la sfârșit, când imprimați lista „u” veți obține un răspuns JSON.

{
"Yahoo finance":
}

Nu este uimitor? Am reușit să răzuim Yahoo finance în doar 5 minute de configurare. Avem o matrice de obiecte python Object care conține datele financiare ale companiei Amazon. În acest fel, putem răzui datele de pe orice site web.

Concluzie

În acest articol, am înțeles cum putem răzui date folosind instrumentul de răzuire a datelor & BeautifulSoup indiferent de tipul de site web.

Nu ezitați să comentați și să mă întrebați orice. Mă puteți urmări pe Twitter și Medium. Vă mulțumim că ați citit și vă rugăm să apăsați butonul de like! 👍

Resurse suplimentare

Și iată lista! În acest moment, ar trebui să vă simțiți confortabil scriind primul dvs. web scraper pentru a aduna date de pe orice site web. Iată câteva resurse suplimentare pe care le puteți găsi utile în timpul călătoriei dvs. de răzuire web:

  • Listă de servicii proxy de răzuire web
  • Listă de instrumente de răzuire web la îndemână
  • Documentație BeautySoup
  • Documentație Scrapingdog
  • Ghid pentru răzuirea web

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.