Add diyanet.gov.tr scraper
commit
602196be13
@ -0,0 +1,2 @@
|
||||
venv
|
||||
.idea
|
||||
@ -0,0 +1,41 @@
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
import httpx
|
||||
from bs4 import BeautifulSoup
|
||||
from pydantic import BaseModel
|
||||
|
||||
_http = httpx.AsyncClient()
|
||||
|
||||
|
||||
class PrayerTimes(BaseModel):
|
||||
date: datetime
|
||||
fajr: str
|
||||
sun: str
|
||||
dhuhr: str
|
||||
asr: str
|
||||
maghrib: str
|
||||
isha: str
|
||||
|
||||
|
||||
async def parse_prayer_times(url: str) -> List[PrayerTimes]:
|
||||
res = await _http.get(url)
|
||||
soup = BeautifulSoup(res.text, 'html.parser')
|
||||
|
||||
items = []
|
||||
for row in soup.select('#tab-1 .vakit-table tbody tr'):
|
||||
cell_texts = (c.text.strip() for c in row.select('td'))
|
||||
headers = PrayerTimes.__fields__.keys()
|
||||
parsed = dict(zip(headers, cell_texts))
|
||||
parsed['date'] = datetime.strptime(parsed['date'], '%d.%m.%Y')
|
||||
items.append(PrayerTimes(**parsed))
|
||||
return items
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import asyncio
|
||||
import pprint
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
results = loop.run_until_complete(parse_prayer_times('https://namazvakitleri.diyanet.gov.tr/en-US'))
|
||||
pprint.pprint(results)
|
||||
Loading…
Reference in New Issue