python:使用requests,bs4爬取西刺代理并验证

爬西刺代理的高匿免费代理,并通过http://www.baidu.com进行验证代理是否可用,存入到excel文件中

查看源代码发现:
所有的代理信息都在tr标签里面(只有一个例外)
源代码

找到所有里面有td标签的tr标签

trs = soup.find_all('tr')
for tr in trs:
    if tr.find('td'):
        item = Items()
        item.IP = tr.find_all('td')[1].get_text().strip()
        item.Port = tr.find_all('td')[2].get_text().strip()
        item.Add = tr.find_all('td')[3].get_text().strip()
        item.Type = tr.find_all('td')[5].get_text().strip()
        sum_agent += 1
        items.append(item)

将所有的代理存入items中

然后通过对百度的访问来确定是否可用

x = 0
for i in xrange(sum_agent):
    time.sleep(random.random()*3)
    url_test_IP = 'http://www.baidu.com'
    IP = 'http://'+items[i].IP.encode('utf-8')+':'+items[i].Port.encode('utf-8')
    headers = {'User-Agent': fa.random}
    proxies = {'http': IP,
               'https': IP}

    try:
        response_test_IP = requests.get(url_test_IP, proxies=proxies, headers=headers)
    except:
        continue

    if response_test_IP.status_code == 200:
        sheet.write(x, 0, items[i].IP)
        sheet.write(x, 1, items[i].Port)
        sheet.write(x, 2, items[i].Add)
        sheet.write(x, 3, items[i].Type)
        sheet.write(x, 4, 'http://'+items[i].IP.encode('utf-8')+':'+items[i].Port.encode('utf-8'))
        x += 1
    response_test_IP.close()

在爬的过程中遇到的问题:
1、代理设置需要同时设置http和https(通过百度得知,至今还未知道原因)

我只爬了一页的代理,其中可用的很少,可以设置循环多爬几页,但是我爬一页就需要好久(时间是个很严重的问题)

https://github.com/YoungChild/xicidaili_python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值