爬虫的代理

爬虫的代理

  • 什么是代理

    • 代理服务器
  • 代理服务器的作用

    • 就是用来转发请求和响应
      在这里插入图片描述
  • 在爬虫中为何需要使用代理?

    • 有些时候,需要对网站服务器发起高频的请求,网站的服务器会检测到这样的异常现象,则会讲请求对应机器的ip地址加入黑名单,则该ip再次发起的请求,网站服务器就不在受理,则我们就无法再次爬取该网站的数据。
    • 使用代理后,网站服务器接收到的请求,最终是由代理服务器发起,网站服务器通过请求获取的ip就是代理服务器的ip,并不是我们客户端本身的ip。
  • 代理的匿名度

    • 透明:网站的服务器知道你使用了代理,也知道你的真实ip
    • 匿名:网站服务器知道你使用了代理,但是无法获知你真实的ip
    • 高匿:网站服务器不知道你使用了代理,也不知道你的真实ip(推荐)
  • 代理的类型(重要)

    • http:该类型的代理服务器只可以转发http协议的请求
    • https:可以转发https协议的请求
  • 如何获取代理?

访问本机ip地址(http://www.cip.cc/)

import requests
from lxml import etree
import re
url = 'http://www.cip.cc/'
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36',
}
page_text = requests.get(url, headers=header)
page_text.encoding = 'utf-8'
tree = etree.HTML(page_text.text)
data = tree.xpath('/html/body/div/div/div[3]/pre/text()')[0]

print(re.search(r'IP\s*:\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', data).group(1))

代理的使用

构建代理池

#代理池函数
def get_proxies_pool(url):
    ret_dic = requests.get(url=url).json()
    # 构建代理池
    proxies_list = []  # 存储多个代理服务器
    for dic in ret_dic['data']:
        ip = dic['ip']
        port = dic['port']
        dic = {}
        dic['https'] = str(ip) + ':' + str(port)
        proxies_list.append(dic)
    return proxies_list

获取代理池

# 获取代理池
proxy_pool = get_proxies_pool(url)
# 从代理池中随机选出一个代理
proxy = random.choice(proxy_pool)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值