kuaidaili.py 895 B

123456789101112131415161718192021222324252627282930313233
  1. from proxypool.crawlers.base import BaseCrawler
  2. from proxypool.schemas.proxy import Proxy
  3. import re
  4. from pyquery import PyQuery as pq
  5. BASE_URL = 'https://www.kuaidaili.com/free/inha/{page}/'
  6. MAX_PAGE = 5
  7. class KuaidailiCrawler(BaseCrawler):
  8. """
  9. kuaidaili crawler, https://www.kuaidaili.com/
  10. """
  11. urls = [BASE_URL.format(page=page) for page in range(1, MAX_PAGE + 1)]
  12. def parse(self, html):
  13. """
  14. parse html file to get proxies
  15. :return:
  16. """
  17. doc = pq(html)
  18. for item in doc('table tr').items():
  19. td_ip = item.find('td[data-title="IP"]').text()
  20. td_port = item.find('td[data-title="PORT"]').text()
  21. if td_ip and td_port:
  22. yield Proxy(host=td_ip, port=td_port)
  23. if __name__ == '__main__':
  24. crawler = KuaidailiCrawler()
  25. for proxy in crawler.crawl():
  26. print(proxy)