在爬取网易云评论的时候,发现自己的本机IP很容易被屏蔽掉,导致爬取失败.所以需要去设置代理去访问,采取的方式是爬取免费网站的代理,我用的是 无忧代理IP-高匿HTTP代理IP服务器供应商,这个代理.在首页有20个代理,但是需要用from selenium import webdriver 去把IP和port取出来,然后在制造一个代理池.随机的去取出代理使用,并且两分钟刷新代理池一次.
下面我贴的代码是关于去除免费代理池的部分,网易云的代码如果需要的话,我之后给大家贴上来.
def getIpPort(): driver = webdriver.PhantomJS() driver.get(http://www.data5u.com/) serverList = {} for x in range(2, 22): ipXpath = /html/body/div[5]/li[2]/ul[+str(x)+]/span[1]/li portXpath = /html/body/div[5]/li[2]/ul[+str(x)+]/span[2]/li ip = driver.find_element_by_xpath(ipXpath).text port = driver.find_element_by_xpath(portXpath).text serUrl = http://+ip+:+port serverList.update({x:{http:serUrl}}) print(serverList) return serverList def checkpox1(proxy): while 1: key = random.choice(list(proxy.keys())) proxydic = proxy[key] print(key) print(proxy[key]) try: print(test) res = requests.post(http://ip.chinaz.com/getip.aspx, timeout=3, proxies=proxydic) print(test over) print(res.status_code) if res.status_code != 200: continue print(res.text) except: print(url in not connect!) print(res.text) proxy = getIpPort() checkpox1(proxy)getIpPort 这个函数去取出代理.函数checkpox1是对代理进行检查,时候是可用的,根据返回值是不是200.
key = random.choice(list(proxy.keys())) proxydic = proxy[key]上面这段代码是随机的取出代理池的一个.
都是小程序,大家看看就好.