说到代理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和没用一样,在反爬策略高的网站照样被封