Created
April 21, 2022 19:39
-
-
Save talhatugsat/95e3080c74db56051bb57008c8b8d97b to your computer and use it in GitHub Desktop.
http modules speed test (asyncio code: keyiflerolsun)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from rich import print | |
from time import time | |
from contextlib import suppress | |
from requests.exceptions import ConnectionError | |
import requests | |
from parsel import Selector | |
from time import sleep | |
import threading | |
from threading import enumerate as threads | |
from httpx import AsyncClient as Session | |
from parsel import Selector | |
from asyncio import run, sleep, gather, create_task | |
import urllib3 | |
kimlik = { | |
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36" | |
} | |
linkler = [ | |
"https://www.trendyol.com/canavice/6-li-mutfak-havlusu-lavanta-seti-40x60-p-171630661", | |
"https://www.trendyol.com/zeynep-tekstil/damask-4-lu-50x90-cm-el-yuz-havlu-seti-p-87609700", | |
"https://www.trendyol.com/burtay-home/pamuklu-lux-boncuklu-gupurlu-havlu-6-li-50x90-rose-p-237085027", | |
"https://www.trendyol.com/louis-marie/banyo-havlu-takimi-70x140-50x90-vip-kahve-p-52290033", | |
"https://www.trendyol.com/minteks/kanavice-50x90-diva-6-li-havlu-takimi-krem-renk-p-59324344", | |
"https://www.trendyol.com/kardelen/100-pamuklu-boncuklu-gupurlu-6-li-havlu-50x90-p-91250754", | |
"https://www.trendyol.com/canavice/6-li-mutfak-havlusu-lavanta-seti-40x60-p-171630661", | |
"https://www.trendyol.com/zeynep-tekstil/damask-4-lu-50x90-cm-el-yuz-havlu-seti-p-87609700", | |
"https://www.trendyol.com/burtay-home/pamuklu-lux-boncuklu-gupurlu-havlu-6-li-50x90-rose-p-237085027", | |
"https://www.trendyol.com/louis-marie/banyo-havlu-takimi-70x140-50x90-vip-kahve-p-52290033", | |
"https://www.trendyol.com/minteks/kanavice-50x90-diva-6-li-havlu-takimi-krem-renk-p-59324344", | |
"https://www.trendyol.com/kardelen/100-pamuklu-boncuklu-gupurlu-6-li-havlu-50x90-p-91250754", | |
"https://www.trendyol.com/canavice/6-li-mutfak-havlusu-lavanta-seti-40x60-p-171630661", | |
"https://www.trendyol.com/zeynep-tekstil/damask-4-lu-50x90-cm-el-yuz-havlu-seti-p-87609700", | |
"https://www.trendyol.com/burtay-home/pamuklu-lux-boncuklu-gupurlu-havlu-6-li-50x90-rose-p-237085027", | |
"https://www.trendyol.com/louis-marie/banyo-havlu-takimi-70x140-50x90-vip-kahve-p-52290033", | |
"https://www.trendyol.com/minteks/kanavice-50x90-diva-6-li-havlu-takimi-krem-renk-p-59324344", | |
"https://www.trendyol.com/kardelen/100-pamuklu-boncuklu-gupurlu-6-li-havlu-50x90-p-91250754", | |
"https://www.trendyol.com/canavice/6-li-mutfak-havlusu-lavanta-seti-40x60-p-171630661", | |
"https://www.trendyol.com/zeynep-tekstil/damask-4-lu-50x90-cm-el-yuz-havlu-seti-p-87609700", | |
"https://www.trendyol.com/burtay-home/pamuklu-lux-boncuklu-gupurlu-havlu-6-li-50x90-rose-p-237085027", | |
"https://www.trendyol.com/louis-marie/banyo-havlu-takimi-70x140-50x90-vip-kahve-p-52290033", | |
"https://www.trendyol.com/minteks/kanavice-50x90-diva-6-li-havlu-takimi-krem-renk-p-59324344", | |
"https://www.trendyol.com/kardelen/100-pamuklu-boncuklu-gupurlu-6-li-havlu-50x90-p-91250754", | |
"https://www.trendyol.com/canavice/6-li-mutfak-havlusu-lavanta-seti-40x60-p-171630661", | |
"https://www.trendyol.com/zeynep-tekstil/damask-4-lu-50x90-cm-el-yuz-havlu-seti-p-87609700", | |
"https://www.trendyol.com/burtay-home/pamuklu-lux-boncuklu-gupurlu-havlu-6-li-50x90-rose-p-237085027", | |
"https://www.trendyol.com/louis-marie/banyo-havlu-takimi-70x140-50x90-vip-kahve-p-52290033", | |
"https://www.trendyol.com/minteks/kanavice-50x90-diva-6-li-havlu-takimi-krem-renk-p-59324344", | |
"https://www.trendyol.com/kardelen/100-pamuklu-boncuklu-gupurlu-6-li-havlu-50x90-p-91250754", | |
] | |
# Threading Testi | |
class thredingScrape(threading.Thread): | |
def __init__(self, daemon=False): | |
super(thredingScrape, self).__init__() | |
self.basla = time() | |
self.s = requests.Session() | |
def scrape(self, link, index): | |
while True: | |
istek = self.s.get(link, headers=kimlik) | |
secici = Selector(istek.text) | |
if baslik := secici.xpath("//title/text()").get(): | |
#print(baslik, index) | |
break | |
sleep(.3) | |
def run(self): | |
for index, link in enumerate(linkler): | |
threading.Thread( | |
target=self.scrape, args=(link, index), daemon=False | |
).start() | |
if __name__ == "__main__": | |
baslat = thredingScrape() | |
baslat.start() | |
while len(threads()) - 1: | |
pass | |
print( | |
f"{len(linkler)} adet link çekildi. $ Thread $ İşlem süresi: {time()-baslat.basla} saniye." | |
) | |
# Urllib3 Testi | |
class thredingScrapeUrllib3(threading.Thread): | |
def __init__(self, daemon=False): | |
super(thredingScrapeUrllib3, self).__init__() | |
self.basla = time() | |
self.http = urllib3.PoolManager() | |
def scrape(self, link, index): | |
while True: | |
istek = self.http.request('GET', link, headers=kimlik) | |
secici = Selector(istek.data.decode('utf-8')) | |
if baslik := secici.xpath("//title/text()").get(): | |
#print(baslik, index) | |
break | |
sleep(.3) | |
def run(self): | |
for index, link in enumerate(linkler): | |
threading.Thread( | |
target=self.scrape, args=(link, index), daemon=False | |
).start() | |
if __name__ == "__main__": | |
baslat = thredingScrapeUrllib3() | |
baslat.start() | |
while len(threads()) - 1: | |
pass | |
print( | |
f"{len(linkler)} adet link çekildi. $ Urllib3 $ İşlem süresi: {time()-baslat.basla} saniye." | |
) | |
# Asyncio Testi | |
async def async_baslik_ver(link:str) -> None: | |
while True: | |
oturum = Session() | |
istek = await oturum.get(link,headers=kimlik) | |
secici = Selector(istek.text) | |
if baslik := secici.xpath("//title/text()").get(): | |
break | |
await sleep(.3) | |
async def async_basla(): | |
yapilacaklar = (create_task(async_baslik_ver(link)) for link in linkler) | |
await gather(*yapilacaklar) | |
if __name__ == "__main__": | |
_basla = time() | |
run(async_basla()) | |
print(f"{len(linkler)} adet link çekildi. $ Async httpx gather $ İşlem süresi: {time()-_basla} saniye.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment