爬虫反爬之代理

  • 使用爬虫爬取网站的数据时,在短时间内对网站发起高频请求,可能会被该网站禁用ip,这时候可以使用不同的代理服务器来进行请求。

  • 代理类型:
    一般根据访问的页面类型分为两种:

    • http
    • https
  • 代理匿名度:

      - 透明:使用代理,服务端可以获得本机ip,知道本地ip使用代理进行访问
      - 匿名:使用代理,服务端无法获得本机ip,但是知道访问页面的是代理
      - 高匿:使用代理,服务端无法分辨是否使用了代理
    
  • 代理的使用

# 进行代理池的封装,代理服务器在ip代理网站获取
# 本代码的代理ip通过ip代理精灵获得
ips = []
# 含有所有代理的网页
ip_url = 'http://t.ipjldl.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=50&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=2'
# 将代理爬取下来
page_text = requests.get(url=ip_url,headers=headers).text
tree = etree.HTML(page_text)
ip_list = tree.xpath('//body//text()')
for ip in ip_list:
    dic = {'https':ip}
    ips.append(dic)


url = 'https://www.kuaidaili.com/free/inha/%d/'
all_data = []
for page in range(2,10):
    print('爬取的是第%d'%page)
    new_url = format(url%page)
    # proxies 就是代理的形参 格式为{'https':"代理"}
    page_text = requests.get(new_url,headers=headers,proxies=random.choice(ips)).text
    tree = etree.HTML(page_text)
    #注意:在xpath表达式中不可以出现tbody标签
    ip_list = tree.xpath('//*[@id="list"]/table//tr/td[1]/text()')
    all_data.append(ip_list)
print(len(all_data))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值