python爬虫之代理的使用

python爬虫之IP代理

1.为什么要使用代理

我们在爬虫的过程中经常遇到这样的情况:最初代码正常运行,正常抓取数据,一切是那么美好,但是一盏茶的功夫过后可能就会出现错误,比如403forbidden 出现这样的原因多半是因为网站采取了反爬措施,比如,网站会检测一个ip单位时间发送的请求数,超过某个数量就会限制该IP的访问,一段时间后才能恢复。这种情况就是封IP,于是网站成功的把我们的爬虫限制了。 试想一下,如果我们能像伪装客户端的方式来伪装ip,是不是就解决问题了呢?

2.获取代理

网上有很多免费代理,如西刺代理等,当然也有收费的,可自行选择。这里以西刺代理为例,看如何爬取代理ip, 首先,百度搜索西刺代理进入官网。
西刺代理
下面附爬虫代码

import requests
import re
from fake_useragent import UserAgent


def spider(url):
    """
    爬取并获得网页源码的字符串
    :param url: 西刺url
    :return: 网页源代码字符串
    """
    ua = UserAgent()
    header = {
        'user-agent': ua.random,
        'Host': 'www.xicidaili.com'
    }
    try:
        response = requests.get(url, headers=header)
    except Exception as e:
        print(e)
    else:
        response.encoding = response.apparent_encoding
    return response.text


def get_ip(text):
	ip_list = re.findall('alt="Cn" /></td>\n[\s]+<td>(.*?)</td>\n[\s]+<td>(.*?)</td>\n\s+<td>\n[\s]+<a href=', s)
	return dict(ip_list)


if __name__ == '__main__':
	text = spider('https://www.xicidaili.com/wn/')
	ip_dict = get_ip(text)

至此就得到了代理ip,那如何检测我们得到的IP是可用的呢,下面我们继续说说如何使用代理ip

3.检测并使用代理

requests中使用代理的方法:

proxy = '带端口的ip'
proxies = {
    'http': 'http://' + proxy,
    'https': 'https//' + proxy
}
header = {...}
url = '目标id'
resp = requests.get(url,proxies=proxies, headers=header)
rescode = requests.status_code

检测ip是否可用:
可根据返回状态码验证是否可用,200则可用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值