getFreeProxy.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: getFreeProxy.py
  5. Description : 抓取免费代理
  6. Author : JHao
  7. date: 2016/11/25
  8. -------------------------------------------------
  9. Change Activity:
  10. 2016/11/25:
  11. -------------------------------------------------
  12. """
  13. import re
  14. import sys
  15. import requests
  16. reload(sys)
  17. sys.setdefaultencoding('utf-8')
  18. from Util.utilFunction import robustCrawl, getHtmlTree
  19. # 快代理
  20. @robustCrawl
  21. def freeProxyFirst(page=10):
  22. """
  23. 抓取快代理IP http://www.kuaidaili.com/
  24. :param page: 翻页数
  25. :return:
  26. """
  27. url_list = ('http://www.kuaidaili.com/proxylist/{page}/'.format(page=page) for page in range(1, page + 1))
  28. # 页数不用太多, 后面的全是历史IP, 可用性不高
  29. for url in url_list:
  30. tree = getHtmlTree(url)
  31. proxy_list = tree.xpath('.//div[@id="index_free_list"]//tbody/tr')
  32. for proxy in proxy_list:
  33. yield ':'.join(proxy.xpath('./td/text()')[0:2])
  34. # 代理66
  35. @robustCrawl
  36. def freeProxySecond(proxy_number=100):
  37. """
  38. 抓取代理66 http://www.66ip.cn/
  39. :param proxy_number: 代理数量
  40. :return:
  41. """
  42. url = "http://m.66ip.cn/mo.php?sxb=&tqsl={}&port=&export=&ktip=&sxa=&submit=%CC%E1++%C8%A1&textarea=".format(
  43. proxy_number)
  44. html = requests.get(url).content
  45. for proxy in re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,4}', html):
  46. yield proxy
  47. # 快代理
  48. def freeProxyThird(days=1):
  49. """
  50. 抓取快代理 http://www.youdaili.net/Daili/http/
  51. :param days:
  52. :return:
  53. """
  54. url = "http://www.youdaili.net/Daili/http/"
  55. tree = getHtmlTree(url)
  56. page_url_list = tree.xpath('.//div[@class="chunlist"]/ul//a/@href')[0:days]
  57. for page_url in page_url_list:
  58. html = requests.get(page_url).content
  59. proxy_list = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,4}', html)
  60. for proxy in proxy_list:
  61. yield proxy
  62. if __name__ == '__main__':
  63. for e in freeProxyThird():
  64. print e