Python 正則匹配網頁內的IP地址及端口號


 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Date    : 2017-08-30 20:38:23
 4 # @Author  : EnderZhou (zptxwd@gmail.com)
 5 # @Link    : http://www.cnblogs.com/enderzhou/
 6 # @Version : $Id$
 7 
 8 import requests
 9 import re
10 
11 def open_url(url):
12     req = requests.get(url=url,headers=headers)
13     html = req.content
14     return html 
15 
16 
17 def get_ipandport(html):
18     #默認網頁內的IP地址位於端口號之前,並且中間至少隔了一個非數字的字符串
19     # (?:((?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5]))  用於匹配IP地址
20     # (6[0-5]{2}[0-3][0-5]|[1-5]\d{4}|[1-9]\d{1,3}|[0-9])    用於匹配端口號 注意端口號匹配規則應從大到校排序 
21     # 使用 ([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5]) 替換即可觀察到原因。
22     # 使用\D+?匹配IP地址與端口號中間至少隔了一個非數字的字符串
23     p = r'(?:((?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5]))\D+?(6[0-5]{2}[0-3][0-5]|[1-5]\d{4}|[1-9]\d{1,3}|[0-9]))'
24     iplist = re.findall(p,html)
25     for each in iplist:
26         print(each)
27 
28 if __name__ == '__main__':
29     url = 'http://www.66ip.cn/'
30     headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'}
31     get_ipandport(open_url(url))

本文所編寫的使用正則對IP地址及端口爬取函數后續將與之前的網頁代理服務器驗證代碼函數整合使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM