Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从网页获取信息_Python_Html_Search - Fatal编程技术网

Python 从网页获取信息

Python 从网页获取信息,python,html,search,Python,Html,Search,我想让脚本从网页上获取信息的信息第一个是网页 所以我想得到NetRange和Name和CIDR,所以我制作了这个代码 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 而不是打

我想让脚本从网页上获取信息的信息第一个是网页

所以我想得到
NetRange
Name
CIDR
,所以我制作了这个代码

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

而不是打印出信息;(

B是一个重新匹配的对象。实际上,您需要的是表单元格旁边的值,该表单元格显示
“NetRange”
。为此,您可以使用类似的HTML/XML解析器


此外,由于这是家庭作业,因此关于样式的注释表明您对编程还不熟悉:有意义的变量名值得您付出努力将其键入。

B是一个重新匹配的对象。您真正想要的是显示
NetRange“的表单元格旁边的值
。为此,您可以使用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

此外,请查看文档,特别是上一节。在这种情况下,您希望
search()
,而不是
match()

,您可能希望重新查看您正在搜索的内容,因为它甚至不在返回的数据中

>>> 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

此外,请查看文档,特别是上的部分。在这种情况下,您需要的是
search()
,而不是
match())

不幸的是,正则表达式严重不足。您应该将该页面的XML源代码复制并粘贴到文本编辑器中,并对其进行检查。首先,认识到它是由XSLT设计的XML。您在您的类中介绍过XML吗?如果是,您应该知道需要使用适当的XML解析器,例如:它更容易、更好、更可靠

如果出于某种原因,您必须将其作为正则表达式执行(实际上,除非是类要求,否则不要这样做),您需要修改您的方法。也许将其用于帮助开发正则表达式。至少您需要括号来捕获值。下面是一个不同网站的示例

countryMatches=re.findall(r”“(.+)”“,AB)
如果匹配:
国家=国家匹配。组(0)[0]#第一场比赛,第一(唯一)组)

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

不幸的是,正则表达式严重不足。您应该将该页面的XML源复制并粘贴到文本编辑器中,并对其进行检查。首先,认识到它是由XSLT设置样式的XML。你在课堂上讲过XML吗?如果是这样的话,您应该知道您需要使用一个合适的XML解析器,这样做更容易、更好、更可靠

如果出于某种原因,您必须将其作为正则表达式来执行(实际上,除非是类要求,否则不要这样做),那么您需要修改您的方法。也许把它放进去帮助开发你的正则表达式。至少你需要括号来捕捉这些值。下面是一个不同网站的示例

countryMatches=re.findall(r”“(.+)”“,AB)
如果匹配:
国家=国家匹配。组(0)[0]#第一场比赛,第一(唯一)组)

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

+1因为“有意义的变量名值得我们付出努力来键入它们。”nmichaels先生,我们可以不用soup模块来编写脚本吗?@jack-X:当然可以,但这超出了这个答案的范围。请注意,使用正则表达式解析XML会给您带来很多“不要那样做”的注释。+1表示“有意义的变量名值得您付出努力键入它们。”nmichaels先生,我们可以在没有汤模块的情况下编写脚本吗?@jack-X:当然可以,但这超出了这个答案的范围。请注意,使用正则表达式解析XML会给您带来很多“不要那样做”的注释。谢谢大家,但我想打印
NetRange
,所以我不知道如何打印!,非常感谢谢谢你们,但我想打印
NetRange
,所以我不知道怎么打印!,非常感谢