摘要:個(gè)人博客凌霄的博客準(zhǔn)備必須環(huán)境開始先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的版本,直接上代碼創(chuàng)建方法設(shè)置一些基本屬性記錄次數(shù)訪問(wèn)簡(jiǎn)單粗暴,刷的只是沒(méi)變,容易被搜索引擎發(fā)現(xiàn),下面我們來(lái)改進(jìn)一下增加代理功能給方法添加以下代碼修改一下主方法添加代理列表,可以自行去百度獲
準(zhǔn)備個(gè)人博客:凌霄的博客
必須環(huán)境:
Python3
開始先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的版本,直接上代碼:
import urllib.request import urllib.error #創(chuàng)建get方法 def get(url): code=urllib.request.urlopen(url).code return code if __name__ == "__main__": #設(shè)置一些基本屬性 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) #記錄次數(shù) i = 1 while 1: code = get(url) print("訪問(wèn):"+str(code)) i = i+1
簡(jiǎn)單粗暴,刷的只是 pv,ip 沒(méi)變,容易被搜索引擎發(fā)現(xiàn),下面我們來(lái)改進(jìn)一下
增加代理功能給 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)
修改一下主方法:
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: #添加參數(shù) code = get(url,proxies) print("第"+str(i)+"次代理訪問(wèn):"+str(code)) i = i+1
這樣差不多了,不過(guò)有個(gè) bug ,如果頁(yè)面打不開了或者代理失效了,程序就自動(dòng)結(jié)束了,接下來(lái)我們添加異常處理功能
異常處理定義 mail 方法 ,用來(lái)發(fā)郵件提醒
def mail(txt): _user = "你的賬號(hào)" _pwd = "你的密碼" _to = "收件賬號(hào)" msg = MIMEText(txt, "plain", "utf-8") #標(biāo)題 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)
然后我們修改一下主方法:
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)+"次代理訪問(wèn):"+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)完成! 結(jié)語(yǔ)
代碼只有短短的 50 行,程序還可以改進(jìn):
例如:代理列表自動(dòng)獲取,添加界面
歡迎評(píng)論
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38613.html
摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無(wú)法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請(qǐng)求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過(guò) Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 本文上一篇系: 利用...
摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無(wú)法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請(qǐng)求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過(guò) Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 本文上一篇系: 利用...
摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問(wèn)題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...
摘要:無(wú)論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時(shí)使用以上三種功能,和都能帶來(lái)很大好處。再就是下篇文章會(huì)介紹如何把和當(dāng)作反向代理服務(wù)器和多個(gè)應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會(huì)有助于解決這一問(wèn)題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過(guò) NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 Python 的著名之...
摘要:無(wú)論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時(shí)使用以上三種功能,和都能帶來(lái)很大好處。再就是下篇文章會(huì)介紹如何把和當(dāng)作反向代理服務(wù)器和多個(gè)應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會(huì)有助于解決這一問(wèn)題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過(guò) NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 Python 的著名之...
閱讀 1438·2021-11-22 15:24
閱讀 2533·2021-10-11 11:06
閱讀 2339·2021-10-09 09:45
閱讀 2538·2021-09-09 09:33
閱讀 645·2019-08-30 15:53
閱讀 1449·2019-08-30 12:48
閱讀 689·2019-08-29 13:47
閱讀 512·2019-08-26 18:27