free_proxy_list.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import re
  2. from pyquery import PyQuery as pq
  3. from proxypool.schemas.proxy import Proxy
  4. from proxypool.crawlers.base import BaseCrawler
  5. from loguru import logger
  6. class FreeProxyListCrawler(BaseCrawler):
  7. urls = [
  8. 'https://free-proxy-list.net',
  9. ]
  10. @logger.catch
  11. def crawl(self):
  12. """
  13. crawl main method
  14. """
  15. for url in self.urls:
  16. logger.info(f'fetching {url}')
  17. html = self.fetch(url)
  18. for proxy in self.parse(html):
  19. logger.info(f'fetched proxy {proxy.string()} from {url}')
  20. yield proxy
  21. def parse(self, html):
  22. """
  23. parse html file to get proxies
  24. :return:
  25. """
  26. print(html)
  27. proxies = re.findall(
  28. r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d+)',
  29. html)
  30. for proxy in proxies:
  31. yield Proxy(host=proxy[0], port=proxy[1])
  32. if __name__ == '__main__':
  33. crawler = FreeProxyListCrawler()
  34. for proxy in crawler.crawl():
  35. print(proxy)