从网页获取信息

2024-09-26 22:45:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让脚本从网页中获取信息首先是页面http://whois.arin.net/rest/nets;q=74.125.232.147?showDetails=true&showARIN=false

所以我想得到NetRange和{}和{},所以我做了这段代码

import sys,urllib,re
J="http://whois.arin.net/rest/nets;q=74.125.232.147?showDetails=true&showARIN=false"
A=urllib.urlopen(J)
AB=A.read()
A.close()
B=re.match("NetRange",AB)
print B

一)不打印信息;(1)


Tags: re脚本restfalsetruehttpnetab
3条回答

不幸的是,这种正则表达式严重不足。您应该将该页面的XML源代码复制并粘贴到文本编辑器中,然后检查它。首先,认识到它是由XSLT设计的XML样式。你在课堂上讨论过XML吗?如果是这样的话,您应该知道您需要使用一个适当的XML解析器,如elementtree来简化、更好和更可靠。在

如果出于某种原因,必须将其作为正则表达式执行(实际上,除非是类要求,否则不要这样做),那么您需要修改您的方法。也许把它放在re-try中以帮助开发正则表达式。至少你需要括号来捕捉这些值。下面是一个不同网站的例子,http://api.hostip.info/?ip=4.8.42.19

countryMatches = re.findall(r"""<countryName>(.+)</countryName>""", AB)
if countryMatches:
    country = countyMatches.group(0)[0] #first match, first (only) group)

另外,请使用更好的变量名。一封信的风格真的很糟糕。你的代码很难阅读,而且只会随着它做更多的工作而变得更难。在

B是重新匹配的对象。实际需要的是位于"NetRange"旁边的表单元格的值。为此,您可以使用类似Beautiful Soup的HTML/XML解析器。在

另外,关于样式的注释,因为这是家庭作业这一事实表明你对编程还不熟悉:有意义的变量名值得花时间把它们输入出来。在

您可能需要重新访问您正在搜索的内容,因为它甚至不在返回的数据中。在

>>> import urllib
>>> J="http://whois.arin.net/rest/nets;q=74.125.232.147?showDetails=true&showARIN=false"
>>> resp = urllib.urlopen(J)
>>> resp.code
200
>>> data = resp.read()
>>> 'NetRange' in data
>>> False

此外,请查看Python's re module的文档,特别是关于search() vs. match()的部分。在本例中,您想要search(),而不是{}。在

相关问题 更多 >

    热门问题