当前位置:   article > 正文

如何获取大量廉价可靠代理IP地址?_西瓜ip代理

西瓜ip代理

这段时间在做一些面试的题目,如果胖友门也想试试的,可以找我要链接哈
在这里插入图片描述
这个题目,不是特别难,解题方法在这个博客:
https://blog.csdn.net/weixin_40576010/article/details/89486527
 
难在怎么拥有起码5000个以上的IP地址,对于我这种平民玩家,我更喜欢免费代理,毕竟不花钱,想要免费代理的话,这个我们可以弄个Cookie池,详细见这个推文:
https://blog.csdn.net/weixin_40576010/article/details/89366179
 
免费代理网站:

免费代理的话,有个坏处,就是,你获取到的IP代理,有一些是挺久以前,也就是大部分都是过期的了,想要弄个5000个IP地址不是问题,可是能用的,寥寥无几,我试了一下,300个大概10个可用吧,所以,我为了加快速度,忍心花钱买了三次,一次一天,IP无限量,讲真的,这些IP地址,刚刚开始,大部分都能爬取成功,那速度,真的快,只是后面,这个题目就是你爬一次,IP封一次,所以后面速度会相对满一点,等你测试通过之后,没有bug再买一天,一顿饭钱,可以换来几个小时的缩减。

代理名字价格
66代理http://www.66daili.cn/UserManage/8块钱一天无限量
西瓜代理http://www.xiguadaili.com/9块钱一天无限量

66代理: web接口提取:
在这里插入图片描述你可以用selenium来弄个自动爬取(每次IP数量1000+)
 
西瓜代理: 提供web接口以及txt文档下载执行(每次IP数量100+)

这里我就用selenium爬取数据,然后保存到redis数据库中的代码:

import redis
from selenium import webdriver
import time
import re


class Redis_Client():
    """数据库客户端"""
    def __init__(self):
        self.db = redis.StrictRedis(host='localhost', port=6379, db=4, decode_responses=True)

    def add(self, proxy, score=100):
        """
        添加代理,设置分数为初始分数
        :param proxy: 代理
        :param score: 分数
        :return: 添加结果
        """
        if not self.db.zscore("proxies", proxy):
            return self.db.zadd("proxies", {proxy: score})


def spider_ip(url, redis_client):
    """
    每隔1分钟爬取一次,, 然后添加到redis数据库中
    :param url: 西瓜代理url
    :param redis_client: redis数据库客户端
    :return: None
    """
    count = 0
    while True:
        try:
            chrome_opetions = webdriver.ChromeOptions()
            chrome_opetions.add_argument("--headless")
            browser = webdriver.Chrome(options=chrome_opetions)
            browser.maximize_window()
            browser.get(url)

            # 获取ip地址
            order_id = browser.find_element_by_id("tid")
            order_id.clear()
            order_id.send_keys("555050574900674")
            check = browser.find_element_by_xpath("//input[@name='category'][3]")
            check.click()
            time.sleep(3)
            submit_click = browser.find_element_by_id("submit_button")
            submit_click.click()
            browser.switch_to_window(browser.window_handles[1])

            # 提取数据
            response = browser.page_source
            text = re.findall(r"pre-wrap;\">(.*)<\/pre.*>", response, re.S)[0]
            if text == "ERROR|没有找到符合条件的IP":
                time.sleep(20)
                browser.quit()
                continue
            with open("id.txt", "w") as fd:
                fd.write(text)
            for i in open("id.txt", "r"):
                print(i.strip())
                proxy = re.sub(r"\s", "", i)
                redis_client.add(proxy=proxy)
            count += 1
            time.sleep(4)
            browser.quit()
            time.sleep(40)
        except Exception as e:
            print(e)
            time.sleep(10)
            continue
        if count == 1500:
            break


def main():
    url = "http://www.xiguadaili.com/web"
    rc = Redis_Client()
    # 开始爬取
    spider_ip(url, rc)


if __name__ == '__main__':
    main()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/287194
推荐阅读
相关标签
  

闽ICP备14008679号