其他分享
首页 > 其他分享> > 网络爬虫之代理IP

网络爬虫之代理IP

作者:互联网

说到代理IP,如果大家想用代理IP的话建议不要找免费的,可用率底而且不可靠性高,找半天找不到几个,前脚刚找到后脚就不能用了(不生气!!)大家可以去某宝花上一块钱买一万个(如果商家让你绑定支付宝身份证啥的就算了,有直接买的),虽然是透明ip。。。。都是博主经历过时间与金钱的教训,省的大家走歪路。上代码:

import urllib.request
with open(r'D:\新建文件夹\代理ip.txt','r') as file:     #读取文件按行读取
    content_list = file.readlines()                    #按行读取文件,即每次获取一条ip
ippool = [x.strip() for x in content_list]             #将读取的文件按列表存到ippool中

def gethtml(url):        #定义获取网页函数
    global ipid          #声明全局变量
    try:
        proxyip=urllib.request.ProxyHandler({'http':ippool[ipid]})
        opener=urllib.request.build_opener(proxyip)   #1、定制一个opener传入参数
        opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36')]
        urllib.request.install_opener(opener)    #2、安装定制的opener
        response = urllib.request.urlopen(url) #3、得到response
        html_doc = response.read().decode("utf-8") #读取得到HTML文件
        #print(html_doc)
        #print(ippool[ipid])
        path='D:\同城58.txt'
        with open(path,'a',encoding='utf-8')as x:
            x.write(html_doc)
    #print("爬取成功!")
    except:                 #这里就比较巧妙了,利用except,如果IP拒绝连接或丢失链接都会导致报错
        ipid+=1
        gethtml(url)         #如果出错就继续抓刚刚报错的网页

def main():
    for i in range(70):
        url = 'www.nopq.icu'
        gethtml(url)
        global ipid
        ipid+=1'''

这里的1、2、3是使用代理IP的一般形式(你可以理解成公式)。
总之你不花钱就很难隐藏自己的ip,买到的这种透明IP和没用一样,在反爬策略高的网站照样被封

标签:url,IP,request,爬虫,urllib,代理,opener,ipid
来源: https://www.cnblogs.com/kanglonggege/p/14695679.html