web-search-api / networks /html_fetcher.py
Hansimov's picture
:gem: [Feature] New HTMLFetcher: download url to local html file
b259fec
raw
history blame
1.35 kB
import requests
from pathlib import Path
from utils.enver import enver
from utils.logger import logger
from networks.filepath_converter import UrlToFilepathConverter
class HTMLFetcher:
def __init__(self):
self.enver = enver
self.enver.set_envs(proxies=True)
def send_request(self):
logger.note(f"Fetching: [{self.url}]")
self.request_response = requests.get(
url=self.url,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62",
},
proxies=self.enver.requests_proxies,
)
def save_response(self):
self.save_path = UrlToFilepathConverter().convert(self.url)
if not self.save_path.exists():
self.save_path.parent.mkdir(parents=True, exist_ok=True)
logger.success(f"Saving to: [{self.save_path}]")
with open(self.save_path, "wb") as wf:
wf.write(self.request_response.content)
def fetch(self, url):
self.url = url
self.send_request()
self.save_response()
if __name__ == "__main__":
url = (
"https://stackoverflow.com/questions/295135/turn-a-string-into-a-valid-filename"
)
fetcher = HTMLFetcher()
fetcher.fetch(url)