import urllib2
import re
content=urllib2.urlopen("https://ipinfo.io/AS32244")
for line in content:
ver_regex = re.compile(r"(?:\d{1,3}\.){3}\d{1,3}(?:/\d\d?)?")
py2_ver = ver_regex.search(line)
print(py2_ver)
我正在使用python 2.7.5并且我没有在每一行都打印。
搜索拉网站的适当方法是什么?
我查看了BeautifulSoup,但我不认为它适用于我,因为桌子的结构如何。
我知道正则表达式确实有效: provide the HttpInterceptor
答案 0 :(得分:1)
对我而言,代码可以正常运行,但打印出很多Nones,你不会注意到匹配。毕竟,大多数线路都不匹配。此代码清楚地显示了结果:
py2_ver = ver_regex.search(line)
if py2_ver:
print(py2_ver.group())
答案 1 :(得分:1)
不是解析每一行,而是一次解析整个事物:
import urllib2
import re
content = urllib2.urlopen("https://ipinfo.io/AS32244").read()
ver_regex = re.compile(r"(?:\d{1,3}\.){3}\d{1,3}(?:/\d\d?)?")
print ver_regex.search(content)
这将打印您要查找的号码的第一个匹配项,如果没有,则打印None
。如果您想要查找所有可能的事件,请使用findall
代替search