import requests from bs4 import BeautifulSoup url = "https://bigpara.hurriyet.com.tr/borsa/hisse-fiyatlari/" r = requests.get(url) soup = BeautifulSoup(r.content,"lxml") details = soup.find_all("div",attrs={"class":"tBody"}) #print(type(details)) for detail in details: print("{} {}".format( detail.a.string, detail.find("li",attrs={"class":"cell004"}).text.strip() ))
We need to take the stocks with BeautifulSoup. Code only iterates the first element. How to iterate each one?
Advertisement
Answer
First find all ul
elements and iterate over it to find title and values according to class
wise and append items to dict1
with key title
dict1={} for ul in details.find_all("ul"): title=ul.find("li",class_="cell003 tal arrow").get_text() values=[i.get_text(strip=True) for i in ul.find_all("li",class_=["cell004","cell003"])][1:] dict1[title]=values
Now you can use pandas
module to transform data to DataFrame using pd.DataFrame
method and get data according to required
import pandas as pd df=pd.DataFrame(dict1) df=df.transpose() columns=[i.get_text(strip=True) for i in soup.find("div",class_="tHead").find_all("li")][1:] df.columns=columns
Output:
Son Dün ( % ) Yüksek Düşük Ağ. Ort Hacim(LOT) Hacim(TL) ACSEL 51,00 50,55 0,89 51,45 50,25 50,84 183.227 9.315.538 ADEL 22,98 22,98 0,00 23,20 22,72 22,93 67.600 1.550.269 .....