python 爬虫搭建代理库

python 爬虫搭建代理库

最近科研由于需要用到微博签到数据,于是就写了个爬虫程序爬取微博签到位置信息,普通的爬取效率太低, 通过多线程又会被遭到IP的封禁,于是就自己写了个创建代理池的程序。
首先找到一个比较稳定的免费代理ip的网址,我这里推荐两个https://www.kuaidaili.com/free/inha,https://ip.jiangxianli.com。这里我拿第二个举例子。
第一步就是爬取这个网站,把里面的ip地址和端口号以及类型给爬取下来,具体爬取方法这里就不再多说,就是最基本的request+bs4就可以了,废话不多说直接上代码

def get_ip():
	# 定义三个列表分别存放ip,端口和类型
    ips, ports, types = [], [], []
    # 请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68"
    }
    # 这里我爬取了99页
    for page in range(1, 100):
        try:
            url = f'https://ip.jiangxianli.com/?page={page}'
            resp = requests.get(url, headers=headers, verify=False)
            print(resp.status_code)
            # BeautifuSoup解析文档
            soup = BeautifulSoup(resp.text, "html.parser")
            tbody = soup.find("tbody")
            for tr in tbody.find_all("tr"):
                tds = tr.find_all("td")
                # 将ip,端口号以及类型存入列表
                ips.append(tds[0].text)
                ports.append(tds[1].text)
                types.append((tds[3]).text)
            time.sleep(1)
            print(f"{page}页")
        except:
            print("请求失败")
     # 返回ip,端口以及类型列表
    return ips, ports, types

第二步,就是检验爬取的ip地址是否可用,把可用的代理ip地址存起来,方便以后调用,这里我就用百度的首页来检验了。上代码

def check_ip():
	# 获取爬到的数据
    ips, ports, types = get_ip()
    # 定义请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68"
    }
    # 定义一个列表保存可以用的ip地址
    good_ip = []
    for i in range(len(ips)):
    	# 定义一个代理对象
        proxy = {}
        # 将遍历得到的ip地址, 端口以及类型存入对象
        proxy[types[i]] = ips[i] + ":" + ports[i]
        try:
            resp = requests.get("https://www.baidu.com", headers=headers, proxies=proxy, verify=False)
			# 判断请求是否成功
            if resp.status_code == 200:
            # 把可用的ip 存入事先声明的列表中
                good_ip.append(proxy)
                print(f"可用的ip{i+1}")
        except Exception as e:
            print(proxy, e)
    # 返回可用的代理ip列表
    return good_ip

代理一时爽,但不要用它做不好的事情哦。本人也是最近刚学爬虫,仅供参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值