getFreeProxy.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. @robustCrawl
  49. def freeProxyThird(days=1):
  50. """
  51. 抓取有代理 http://www.youdaili.net/Daili/http/
  52. :param days:
  53. :return:
  54. """
  55. url = "http://www.youdaili.net/Daili/http/"
  56. tree = getHtmlTree(url)
  57. page_url_list = tree.xpath('.//div[@class="chunlist"]/ul//a/@href')[0:days]
  58. for page_url in page_url_list:
  59. html = requests.get(page_url).content
  60. proxy_list = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,4}', html)
  61. for proxy in proxy_list:
  62. yield proxy
  63. # 西刺
  64. @robustCrawl
  65. def freeProxyFourth():
  66. """
  67. 抓取西刺代理 http://api.xicidaili.com/free2016.txt
  68. :return:
  69. """
  70. url = "http://api.xicidaili.com/free2016.txt"
  71. html = requests.get(url).content
  72. for proxy in re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,4}', html):
  73. yield proxy
  74. # guobanjia
  75. @robustCrawl
  76. def freeProxyFifth():
  77. """
  78. 抓取guobanjia http://www.goubanjia.com/free/gngn/index.shtml
  79. :return:
  80. """
  81. url = "http://www.goubanjia.com/free/gngn/index.shtml"
  82. tree = getHtmlTree(url)
  83. proxy_list = tree.xpath('.//td[@class="ip"]')
  84. for proxy in proxy_list:
  85. yield ''.join(proxy.xpath('.//text()'))
  86. if __name__ == '__main__':
  87. for e in freeProxyFifth():
  88. print e