获得代理ippython_Python自动获取代理IP
最近在FreeBuf網(wǎng)站上幾經(jīng)瀏覽與嘗試過后,發(fā)現(xiàn)用Python自動(dòng)獲取代理IP地址的方法,感覺不賴,然后自身又無啥技術(shù),所以想先從分析他人的程序入手進(jìn)行學(xué)習(xí),增進(jìn)技藝。在此感謝 i春秋作家-Mochazz(freebuf作者),在他們這些大佬身上學(xué)到了許多,感謝互聯(lián)網(wǎng),希望看見自己成長。
代碼
from bs4 import BeautifulSoup
import requests
import os
url = "http://www.xicidaili.com/nn/1"
#注意復(fù)制粘貼的HEADERS里不能有奇異的符號(hào)
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
r = requests.get(url=url,headers=headers)#requests庫get方法獲取HTML網(wǎng)頁
soup = BeautifulSoup(r.text,"lxml")
#bs中的select方法通過類名查找,組合查找。 (".odd > td:nth-of-type(n)")是指class為odd的標(biāo)簽里的第n個(gè)類型為td的子標(biāo)簽
server_address = soup.select(".odd > td:nth-of-type(4)")
ip_list = soup.select(".odd > td:nth-of-type(2)") #select對(duì)象返回的是列表
ports = soup.select(".odd > td:nth-of-type(3)")
for server,ip in zip(server_address,ip_list): #zip函數(shù)接受任意多個(gè)可迭代對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)tuple,后以列表形式輸出。
if len(server.contents) != 1: #bs .contents方法可以將tag的子節(jié)點(diǎn)以列表的方式輸出
print(server.a.string.ljust(8),ip.string.ljust(20), end='') #ljust() 方法返回一個(gè)原字符串左對(duì)齊,并使用空格填充至指定長度的新字符串。
else:
print("未知".ljust(8), ip.string.ljust(20), end='')
delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -") #os.popen() 方法用于從一個(gè)命令打開一個(gè)管道
delay_time = delay_time.read().split("time=")[-1].strip("\r\n")
print("time = " + delay_time)
方法簡要awk'{pattern + action}'{filenames}
awk語言的最基本功能是在文件或者字符串中基于指定規(guī)則瀏覽和抽取信息。pattern表示AWK在數(shù)據(jù)中查找的內(nèi)容,action則是匹配內(nèi)容后所執(zhí)行的一系列指令。
" | "符號(hào)把ping的操作對(duì)象與awk表示方法隔開。NR是awk的內(nèi)置指令,表示已經(jīng)讀出的記錄數(shù),表示行號(hào)。NR ==2也就是取第二行。
2. strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列。split()通過指定分隔符對(duì)字符串進(jìn)行切片。
3.os.popen()函數(shù)方法用于從一個(gè)命令打開一個(gè)管道
總結(jié)
我知道LINUX下可以正常使用,但我在windows下的os.popen()函數(shù)無法解決問題,可能是我比較菜泥......還有想知道 delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -")這一行中的 “-”符號(hào)有什么用處,感謝
總結(jié)
以上是生活随笔為你收集整理的获得代理ippython_Python自动获取代理IP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七牛云 转码_普通音视频转码(avthu
- 下一篇: Python自动化运维实战:使用Pyth