澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-06-08 15:05 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

威尼斯人线上娱乐网使用python验证代理ip是否可用

不常写爬虫,难免会境遇ip被目的网址屏蔽的气象,银次2个ip肯定缺乏用,作为节约的程序猿,能不花钱就不花钱,那就本人去找呢,本次就写了下抓取 西刺代理上的ip,然则那几个网址也反爬!!!

网络有成都百货上千无需付费的ip地址,都以能够动用的,可是只要手动来获得太勤奋,这里通过Python自动抓取,可以批量取得。

在运用爬虫爬取网络数据时,假如长日子对一个网址进行抓取时大概会蒙受IP被封的情形,这种景观可以采纳代理改换ip来突破服务器封IP的范围。

有关怎么样应对,作者感觉能够经过增添延时试试,大概是自己抓取的太频仍了,所以被封IP了。

代码如下:

顺手在百度上寻觅无偿代理IP,可以赢得1密密麻麻的网址,这里大家经过对西刺网址的抓取来比喻。

但是,照旧得以去IP巴士试试的,条条大路通休斯敦嘛,无法吊死在壹棵树上。

# -*- coding: utf-8 -*-
import re
import urllib2
import json
import os
import time
import socket

class ProxyIp(object):
  def __init__(self):
    self.path = os.path.split(os.path.realpath(__file__))[0]
  # Get latest proxy ip and download to json
  def update_ip(self):
    print 'Update Ip'
    url = 'http://www.ip3366.net/free/'
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    matches = re.findall(
      ur'(d .d .d .d )</td>s <td>(d )</td>s <td>.*?</td>s <td>(HTTPS?)</td>',
      response.read(),
      re.I
    )
    ls = []
    for match in matches:
      if self.is_open(match[0], match[1]):
        ls.append({'ip':match[0], 'port':match[1], 'protocol': match[2]})
    with open('%s/ip.json' % self.path, 'w') as f:
      json.dump(ls, f)
    return ls
  # whether the ips is last or old.
  def is_last(self):
    m_time = int(os.path.getmtime('%s/ip.json' % self.path))
    now_time = int(time.time())
    return (now_time - m_time) > 60*60*4 # 4 hours
  @staticmethod
  def is_open(ip, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
      s.connect(ip, int(port))
      return True
    except:
      print 'Faild IP: %s:%s' % (ip, port)
      return False
  def get_proxy_ips(self):
    if not self.is_last():
      return self.update_ip()
    else:
      with open('%s/ip.json' % self.path, 'r') as f:
        return json.load(f)

经过编写制定贰个爬虫来抓取网址上边的IP地址,端口,及项目,把那些音讯存到本地。这里不做牵线。

不废话,上代码。

如上这篇Python采撷代理ip并剖断是或不是可用和定时更新的点子就是小编分享给大家的全部内容了,希望能给大家一个参照,也期待大家多多支持脚本之家。

说古代理IP是不是可用。原理是选择代理IP访问钦命网址,如若回到状态为200,表示这一个代理是能够动用的。

#!/usr/bin/env python
# -*- coding:utf8 -*-
import urllib2
import time
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
 'Accept':'text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8',
 #'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'Accept-Encoding':'en-us',
 'Connection':'keep-alive',
 'Referer':'http://www.baidu.com/'
 }
req_timeout = 5
testUrl = "http://www.baidu.com/"
testStr = "wahaha"
file1 = open('proxy.txt' , 'w')
# url = ""
# req = urllib2.Request(url,None,req_header)
# jsondatas = urllib2.urlopen(req,None,req_timeout).read()
cookies = urllib2.HTTPCookieProcessor()
checked_num = 0
grasp_num = 0
for page in range(1, 160):
 req = urllib2.Request('http://www.xici.net.co/nn/'   str(page), None, req_header)
 html_doc = urllib2.urlopen(req, None, req_timeout).read()
 # html_doc = urllib2.urlopen('http://www.xici.net.co/nn/'   str(page)).read()
 soup = BeautifulSoup(html_doc)
 trs = soup.find('table', id='ip_list').find_all('tr')
 for tr in trs[1:]:
  tds = tr.find_all('td')
  ip = tds[1].text.strip()
  port = tds[2].text.strip()
  protocol = tds[5].text.strip()
  if protocol == 'HTTP' or protocol == 'HTTPS':
   #of.write('%s=%s:%sn' % (protocol, ip, port))
   print '%s=%s:%s' % (protocol, ip, port)
   grasp_num  =1
   proxyHandler = urllib2.ProxyHandler({"http": r'http://%s:%s' % (ip, port)})
   opener = urllib2.build_opener(cookies, proxyHandler)
   opener.addheaders = [('User-Agent',
         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]
   t1 = time.time()
   try:
    req = opener.open(testUrl, timeout=req_timeout)
    result = req.read()
    timeused = time.time() - t1
    pos = result.find(testStr)
    if pos > 1:
     file1.write(protocol "t" ip "t" port "n")
     checked_num =1
     print checked_num, grasp_num
    else:
     continue
   except Exception,e:
    continue
file1.close()
print checked_num,grasp_num

您大概感兴趣的稿子:

  • Python爬虫代理IP池达成情势
  • Python爬虫设置代理IP的不贰秘技(爬虫手艺)
  • Python爬虫抓代替理IP并检查可用性的实例
  • 利用Python爬取可用的代理IP
  • Python实现检查实验代理IP是还是不是足以翻墙
  • python扫描proxy并获得可用代理ip的实例
# _*_ coding:utf-8 _*_
import urllib2
import re
class TestProxy(object):
  def __init__(self):
    self.ip = '106.46.136.64'
    self.port = '808'
    self.url = 'http://www.baidu.com'
    self.timeout = 3
    self.regex = re.compile(r'baidu.com')
    self.run()
  def run(self):
    self.linkWithProxy()
  def linkWithProxy(self):
    server = 'http://'  self.ip   ':'  self.port
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http':server}))
    urllib2.install_opener(opener)
    try:
      response = urllib2.urlopen(self.url, timeout=self.timeout)
    except:
      print '%s connect failed' % server
      return
    else:
      try:
        str = response.read()
      except:
        print '%s connect failed' % server
        return
      if self.regex.search(str):
        print '%s connect success .......' % server
        print self.ip   ':'   self.port
if __name__ == '__main__':
  Tp = TestProxy()

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:威尼斯人线上娱乐网使用python验证代理ip是否可用

关键词: 澳门威利斯人