Python 3.x Python3-从动态网页中提取IP地址和端口号
我想从这个链接中提取IP地址和端口号。以下是我的Python代码: 输出- ['37.59.0.139','212.47.239.185','85.248.227.165','167.114.250.199','51.15.86.160','212.83.164.85','82.224.48.173'] 我只得到IP地址,但没有端口号Python 3.x Python3-从动态网页中提取IP地址和端口号,python-3.x,Python 3.x,我想从这个链接中提取IP地址和端口号。以下是我的Python代码: 输出- ['37.59.0.139','212.47.239.185','85.248.227.165','167.114.250.199','51.15.86.160','212.83.164.85','82.224.48.173'] 我只得到IP地址,但没有端口号 我期待这样的事情-'37.59.0.139:17658'首先,你的正则表达式有点不稳定:你有(?:,你可能是指(:?。不确定前者是什么意思,但后者意味着零或一:
我期待这样的事情-'37.59.0.139:17658'首先,你的正则表达式有点不稳定:你有
(?:
,你可能是指(:?
。不确定前者是什么意思,但后者意味着零或一:
您的正则表达式只查找按:
或
拆分的四组数字。您最多需要五组数字:0.0.0.0:0000
=五组。请尝试以下操作:
re.findall( r'([0-9]{1,3}\.){3}[0-9]{1,3}(:[0-9]{2,4})?'
=介于一位和三位之间[0-9]{1,3}
=句点(转义,因为\.
表示“任何字符”)
=上述内容需要重复三次{3}
一个冒号,后跟两到四个字符的数字序列。这是您的端口。(:[0-9]{2,4})
端口是可选的,它要么在那里,要么不在那里?
通过检查HTML响应,我发现每个端口号的前面是
:
,后面是r'\d{1,3}(?:\.\d{1,3}){3}:\d+'
对我有效。我替换了[0-9]
用相应的类\d
阻塞。但是请查看返回的文本:您搜索的字符串不是以该格式返回的。相反,他们在IP和端口之间添加了额外的html元素。感谢P.Shark。我在安装DrySrape模块时出错。我按照此文档在我的Ubuntu操作系统中进行安装-但未成功。PermissionError:[Errno 13]权限被拒绝:“/usr/local/lib/python3.5/dist packages/xvfbwrapper.py”请看我提供的链接中的第一个答案:您将找到指向Drysrap github页面的链接,该页面提供了如何在Ubuntu环境中正确安装它的说明。请确保以sudo的方式执行命令;)@shark-我尝试了这个站点的正则表达式,但是我无法通过。你能给正则表达式找到IP和端口吗。r'[0-9]+(?:\.[0-9]+){3}:[0-9]+[0-9]?'这有效。
re.findall( r'([0-9]{1,3}\.){3}[0-9]{1,3}(:[0-9]{2,4})?'
import dryscrape
import re
url = 'http://spys.one/free-proxy-list/FR/'
#get html with javascript
session = dryscrape.Session()
session.visit(url)
response = session.body()
#capture ip:
IP = re.findall(r'[0-9]+(?:\.[0-9]+){3}(?=<script)',response)
#capture port:
port = re.findall(r'(?<=:</font>)(.*?)(?=\<)',response)
#join IP with ports
IP_with_ports = []
for i in range(len(IP)):
IP_with_ports.append(IP[i] + ":" + port[i])
print (IP_with_ports)