hidemy.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 HidemyCrawler(BaseCrawler):
  7. urls = [
  8. 'https://hidemy.name/en/proxy-list/?type=h&anon=4#list',
  9. 'https://hidemy.name/en/proxy-list/?type=h&anon=4&start=64#list',
  10. 'https://hidemy.name/en/proxy-list/?type=h&anon=4&start=128#list',
  11. 'https://hidemy.name/en/proxy-list/?type=h&anon=4&start=192#list',
  12. ]
  13. @logger.catch
  14. def crawl(self):
  15. """
  16. crawl main method
  17. """
  18. for url in self.urls:
  19. logger.info(f'fetching {url}')
  20. html = self.fetch(url)
  21. for proxy in self.parse(html):
  22. logger.info(f'fetched proxy {proxy.string()} from {url}')
  23. yield proxy
  24. def parse(self, html):
  25. """
  26. parse html file to get proxies
  27. :return:
  28. """
  29. print(html)
  30. proxies = re.findall(
  31. r'<td>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td><td>(\d+)</td>',
  32. html)
  33. for proxy in proxies:
  34. yield Proxy(host=proxy[0], port=proxy[1])
  35. if __name__ == '__main__':
  36. crawler = HidemyCrawler()
  37. for proxy in crawler.crawl():
  38. print(proxy)