JavaScript
x
17
17
1
import requests
2
from bs4 import BeautifulSoup
3
4
url = "https://bigpara.hurriyet.com.tr/borsa/hisse-fiyatlari/"
5
6
r = requests.get(url)
7
soup = BeautifulSoup(r.content,"lxml")
8
details = soup.find_all("div",attrs={"class":"tBody"})
9
#print(type(details))
10
11
for detail in details:
12
13
print("{} {}".format(
14
detail.a.string,
15
detail.find("li",attrs={"class":"cell004"}).text.strip()
16
))
17
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
JavaScript
1
6
1
dict1={}
2
for ul in details.find_all("ul"):
3
title=ul.find("li",class_="cell003 tal arrow").get_text()
4
values=[i.get_text(strip=True) for i in ul.find_all("li",class_=["cell004","cell003"])][1:]
5
dict1[title]=values
6
Now you can use pandas
module to transform data to DataFrame using pd.DataFrame
method and get data according to required
JavaScript
1
8
1
import pandas as pd
2
3
df=pd.DataFrame(dict1)
4
df=df.transpose()
5
6
columns=[i.get_text(strip=True) for i in soup.find("div",class_="tHead").find_all("li")][1:]
7
df.columns=columns
8
Output:
JavaScript
1
5
1
Son Dün ( % ) Yüksek Düşük Ağ. Ort Hacim(LOT) Hacim(TL)
2
ACSEL 51,00 50,55 0,89 51,45 50,25 50,84 183.227 9.315.538
3
ADEL 22,98 22,98 0,00 23,20 22,72 22,93 67.600 1.550.269
4
..
5