Web Scraping Yaparken Nasıl Proxy Kullanabilirim?
Web scraping ile uğraşıyorum ve zaman zaman bazı siteler üzerinde ip ban yiyorum. Biliyorum her sitenin kendine has koruma yöntemleri var fakat bazı durumlarda da proxy kullanarak bu ip engellini atlatmaya çalışıyorum. Aşağıdaki python kodunda proxy adreslerini çekiyorum ve bir site üzerinde engellendiğimde proxy değiştirerek bağlantı kurmaya çalışıyorum(evet ücretli servisler var ve ödeme yaparak kullanabilirim). Şu an için bir ödeme yaparak bu hizmeti alıcak kadar yoğunlukta iş yapmıyorum. Doğru proxy'i bulup bağlanması kimi zaman çok uzun sürüyor ve beni yavaşlatıyor. Kod ile ilgili bir sıkıntı yok ama daha hızlı işlem yapabileceğim bir yöntem var mı? Önerileriniz varsa rica edebilir miyim?
def get_html(link, **kwargs):
while True:
try:
proxy = proxy_generator()
response = requests.request(
"get", link, proxies=proxy, timeout=7, **kwargs)
source = BeautifulSoup(response.content, "html.parser")
break
except Exception as e:
print(e)
return source
def proxy_generator():
response = requests.get("https://sslproxies.org/")
soup = BeautifulSoup(response.content, 'html.parser')
proxies = soup.find_all("tbody") # tablonun icini aliyorum
proxies = proxies[0].find_all("tr") # tablonun icindeki tum satirlari aliyorum
proxies_array = []
for i in proxies: # satirlari tek tek gezip ip ve portu ayikliyorum
try:
ip = i.find_all("td")[0].text
port = i.find_all("td")[1].text
proxies_array.append({"https":ip+":"+port})
except Exception as e:
print(e)
result = random.choice(proxies_array)
return result
Kodu bir türlü renklendiremedim kusura bakmayın
Sadece GET
isteği yapıyorsan facebook'un proxy'sini kullanabilirsin. Facebook Bot olduğu için engel yemiyor. https://developers.facebook.com/tools/debug/echo/?q=https://prototurk.com