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