python怎么代理ip

python

使用到的库

from bs4 import BeautifulSoup

import random

import urllib.request

下面是对该网站的简单解析提取HTTP的高匿IP

使用BeautifulSoup进行网页解析

def get_proxy_list():

    target = 'http://www.xicidaili.com/nn/' + str(random.randint(0, 100))

    try:

        opener = urllib.request.build_opener()

        #header可以选自己浏览器的

        #样例:[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) ''AppleWebKit/537.36 

        (KHTML,like Gecko)Chrome/56.0.2924.87 Safari/537.36')]

        opener.addheaders = self.headers

        urllib.request.install_opener(opener)

        html = urllib.request.urlopen(target).read().decode('utf-8')

        tr = BeautifulSoup(html, 'lxml').find_all('tr')

        p = re.compile('<[^>]+>')

        for tag in tr:

            td_list = tag.find_all('td')

            if len(td_list) > 0:

                if str(td_list[5]) == '<td>HTTP</td>':

                #将爬到的代理IP存到列表里面

                    self.proxy_list.append(p.sub('', str(td_list[1])) + ':' + p.sub('', 

                    str(td_list[2])))

    except Exception as b:

        self.logger.exception(b)

相关推荐:《Python入门教程》

接下来就是代理IP的使用

使用的是urllib这个库,到了python3以后这个库可以进行的操作比之前更多,也可以进行一些复杂连接的模拟了。

def init_urllib():

#这个函数用来初始化urllib的参数

length = len(self.proxy_list)

if length == 0:

    get_proxy_list()

#随机得到一个IP

ip = random.choice(self.proxy_list)

self.proxy_list.remove(ip)

proxy = {'http': ip}

proxy_support = urllib.request.ProxyHandler(proxy)

#加载代理

opener = urllib.request.build_opener(proxy_support)

opener.addheaders = self.headers

#初始化urllib

urllib.request.install_opener(opener)

def connect(uri):

html = ''

flag = 20

while flag > 0:

    try:

        html = urllib.request.urlopen(uri).read().decode('utf-8')

        break

    except Exception as b:

    #这里可以将异常细化,由于是简单实现就不做具体实现了

        self.logger.exception(b)

        #实现更换IP重新请求

        flag -= 1

        init_urllib()

return BeautifulSoup(

    html,

    'lxml')

以上就是python对代理IP使用的简单介绍了。

以上是 python怎么代理ip 的全部内容, 来源链接: utcz.com/z/523005.html

回到顶部