封装了一个同时使用用户代理池与ip代理池的方法
def ua_ip(myurl):
import urllib.request
import random
uapools=[
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Firefox/52.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6",
"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0)",
]
def api():
print("this make a new ip")
thisall=urllib.request.urlopen("http://tvp.daxiangdaili.com/ip/?tid=********大象ip的订单号********&num=10&foreign=only&filter=on")
ippools=[]
for item in thisall:
ippools.append(item.decode("utf-8","ignore"))
return ippools
def ip(ippools,time,uapools):
thisua=random.choice(uapools)
print(thisua)
headers=("USer-Agent",thisua)
thisip=ippools[time]
print("currntIp is :"+ippools[time])
proxy=urllib.request.ProxyHandler({"http":thisip})
opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
opener.addheaders=[headers]
urllib.request.install_opener(opener)
x=0
for i in range(0,35):
try:
if(x%10==0):
time=x%10
ippools=api()
ip(ippools,time,uapools)
else:
time=x%10
ip(ippools,time,uapools)
url=myurl
data1=urllib.request.urlopen(url).read()
data=data1.decode("utf-8","ignore")
print(len(data))
x+=1
break
except Exception as err:
print(err)
x+=1
return data
保存为ua_ip.py
当想调用的时候
import sys
sys.path.append('/Users/cailiang/Desktop/ua_ip.py')
from ua_ip import *
data=ua_ip("你想输入的网址")

网友评论