Python--代理IP

前言:

        当你需要在同一个网站爬取大量信息的时候,通常你会遇到各种各种各样的阻挠,其中一种就是IP被封,这时代理IP就成了我们不二的选择,我们下面的IP来源于http://www.xicidaili.com/

代码:

# IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/  
  
from bs4 import BeautifulSoup  
import requests  
import random  
  
#功能:爬取IP存入ip_list列表  
def get_ip_list(url, headers):  
    web_data = requests.get(url, headers=headers)  
    soup = BeautifulSoup(web_data.text, 'lxml')  
    ips = soup.find_all('tr')  
    ip_list = []  
    for i in range(1, len(ips)):  
        ip_info = ips[i]  
        tds = ip_info.find_all('td')  
        if not tds[8].text.find('天')==-1:  
            print('tds[8]为:'+str(tds[8]))  
            ip_list.append(tds[1].text + ':' + tds[2].text)  
            print(tds[1].text + ':' + tds[2].text)  
    return ip_list  
  
#功能:1,将ip_list中的IP写入IP.txt文件中  
#      2,获取随机IP,并将随机IP返回  
def get_random_ip(ip_list):  
    proxy_list = []  
    for ip in ip_list:  
        proxy_list.append('http://' + ip)  
        f=open('IP.txt','a+',encoding='utf-8')  
        f.write('http://' + ip)  
        f.write('\n')  
        f.close()  
    proxy_ip = random.choice(proxy_list)  
    proxies = {'http': proxy_ip}  
    return proxies  
  
if __name__ == '__main__':    
    for i in range(1,40):
        url = 'http://www.xicidaili.com/wt/{}'.format(i) 
        headers = {  
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'  
        }  
        ip_list = get_ip_list(url, headers=headers)  
        proxies = get_random_ip(ip_list)  
        print(proxies)  

        需要注意的一点是proxies的格式是一个字典:{‘http’: ‘http://42.84.226.65:8888‘}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券