我的博客:凌霄的博客dom
Python3ui
先實現一個簡單的版本,直接上代碼:搜索引擎
import urllib.request import urllib.error #建立get方法 def get(url): code=urllib.request.urlopen(url).code return code if __name__ == '__main__': #設置一些基本屬性 url = "http://lx.nextdev.cn" user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36" headers = {'User-Agent':user_agent} req = urllib.request.Request(url, headers=headers) #記錄次數 i = 1 while 1: code = get(url) print('訪問:'+str(code)) i = i+1
簡單粗暴,刷的只是 pv
,ip
沒變,容易被搜索引擎發現,下面咱們來改進一下url
給 get
方法添加如下代碼:代理
random_proxy = random.choice(proxies) proxy_support = urllib.request.ProxyHandler({"http":random_proxy}) opener = urllib.request.build_opener(proxy_support) urllib.request.install_opener(opener)
修改一下主方法:code
if __name__ == '__main__': url = "http://lx.nextdev.cn" #添加代理列表,能夠自行去百度獲取 proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"] user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36" headers = {'User-Agent':user_agent} req = urllib.request.Request(url, headers=headers) i = 1 while 1: #添加參數 code = get(url,proxies) print('第'+str(i)+'次代理訪問:'+str(code)) i = i+1
這樣差很少了,不過有個 bug
,若是頁面打不開了或者代理失效了,程序就自動結束了,接下來咱們添加異常處理功能索引
定義 mail
方法 ,用來發郵件提醒ip
def mail(txt): _user = "你的帳號" _pwd = "你的密碼" _to = "收件帳號" msg = MIMEText(txt, 'plain', 'utf-8') #標題 msg["Subject"] = "代理失效!" msg["From"] = _user msg["To"] = _to try: #這裏我用的qq郵箱 s = smtplib.SMTP_SSL("smtp.qq.com", 465) s.login(_user, _pwd) s.sendmail(_user, _to, msg.as_string()) s.quit() print("Success!") except smtplib.SMTPException as e: print("Falied,%s" % e)
而後咱們修改一下主方法:utf-8
if __name__ == '__main__': url = "http://lx.nextdev.cn" proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"] user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36" headers = {'User-Agent':user_agent} req = urllib.request.Request(url, headers=headers) i = 1 while 1: try: code = get(url,proxies) print('第'+str(i)+'次代理訪問:'+str(code)) i = i+1 except urllib.error.HTTPError as e: print(e.code) #添加mail方法 mail(e.code) except urllib.error.URLError as err: print(err.reason) #添加mail方法 mail(err.reason)
代碼只有短短的 50 行,程序還能夠改進:
例如:代理列表自動獲取,添加界面get
歡迎評論