Skip to content

Instantly share code, notes, and snippets.

@talhatugsat
Created April 21, 2022 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save talhatugsat/95e3080c74db56051bb57008c8b8d97b to your computer and use it in GitHub Desktop.
Save talhatugsat/95e3080c74db56051bb57008c8b8d97b to your computer and use it in GitHub Desktop.
http modules speed test (asyncio code: keyiflerolsun)
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