日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

获得代理ippython_Python自动获取代理IP

發(fā)布時(shí)間:2023/12/16 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获得代理ippython_Python自动获取代理IP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。