Source code for scylla.providers.spys_one_provider
import re
from requests_html import HTML
from scylla.database import ProxyIP
from scylla.providers import BaseProvider
[docs]class SpysOneProvider(BaseProvider):
[docs] def urls(self) -> [str]:
return [
'http://spys.one/en/anonymous-proxy-list/',
# 'http://spys.one/en/http-proxy-list/',
# 'http://spys.one/en/https-ssl-proxy/',
]
[docs] def parse(self, html: HTML) -> [ProxyIP]:
ip_list: [ProxyIP] = []
for ip_row in html.find('table tr[onmouseover]'):
ip_port_text_elem = ip_row.find('.spy14', first=True)
if ip_port_text_elem:
ip_port_text = ip_port_text_elem.text
ip = re.search(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', ip_port_text).group(0)
port = re.search(r':\n(\d{2,5})', ip_port_text).group(1)
if ip and port:
p = ProxyIP(ip=ip, port=port)
ip_list.append(p)
return ip_list
[docs] @staticmethod
def should_render_js() -> bool:
return True