Nicba1010 icon

JonnySP

Nicba1010 | PRO | 12/28/18 01:41:35 PM UTC | 0 ⭐ | 314 👁️ | Never ⏰ | []
Python |

1.38 KB

|

None

|

0 👍

/

0 👎

import json
import os
import time
from typing import List
 
import requests
from bs4 import BeautifulSoup
from requests import Session, Response
 
 
class JonnySPScraper(object):
    base_url: str = "http://jonnysp.bplaced.net/"
    url: str = "{}data.php?draw=1&_=()&start=0&length=100000&columns%5B0%5D%5Bd%5D".format(
        base_url, int(time.time() * 1000)
    )
 
    def __init__(self, files_root: str):
        self.ird_urls: List[str] = []
        self.files_root: str = files_root
        with Session() as s:
            data = json.loads(s.get(self.url).content, encoding='UTF-8')
            for ird in data['data']:
                soup: BeautifulSoup = BeautifulSoup(ird['filename'], 'lxml')
                ird_url: str = self.base_url + soup.find('a')['href']
                self.ird_urls.append(ird_url)
 
        for ird_url in self.ird_urls:
            self.download_ird(ird_url)
 
    def download_ird(self, ird_url: str):
        file_name: str = ird_url.split('/')[-1]
        r: Response = requests.get(ird_url, stream=True)
        with open(os.path.join(self.files_root, file_name), 'wb') as f:
            for chunk in r.iter_content(chunk_size=512 * 1024 * 1024):
                if chunk:
                    f.write(chunk)
        print(ird_url + " has been downloaded!")
 
 
if __name__ == '__main__':
    JonnySPScraper(files_root="H:/IRD/")

Comments