请求library和validator.w3.org/nu

时间:2016-05-19 14:29:49

标签: python python-requests w3c-validation

我想使用validator.w3.org/nu的API。

文档:https://github.com/validator/validator/wiki/Service:-Input:-GET

我的代码:

validaror_url = "https://validator.w3.org/nu/"        
headers = { "Content-type": "text/html, charset=utf-8" }

ip_address = urllib.quote("http://www.artlebedev.ru/")
params = { "doc": ip_address, "out": "json"}

response = requests.get(validaror_url, headers=headers, 
                        params=params)

我明白了:

Response: <Response [200]>
content str: {"url":"http%3A//93.185.180.36/","messages":[{"type":"non-document-error","subType":"io","message":"Missing scheme"}]}\n   

如果我采取另一个示例站点,则再次出现非文档错误。

此错误在此处被破译:https://github.com/validator/validator/wiki/Output:-JSON

但无论如何,这样的错误信息不应该存在。

如果我将请求更改为unirest,一切都很好(有很多消息,而且它们是提供信息的消息)。但是由于没有Python3支持,unirest不适合我。

我认为,问题可能是问题是请求不符合“仅”和“支持作为查询参数分隔符。”;“不支持”(这来自验证者的文档)。

嗯,请求不是教条。我需要的是从验证器获得有意义的响应,而使用Python3。如果请求不合适,也许我应该改变它。

你能帮我一把吗?

1 个答案:

答案 0 :(得分:1)

不要做任何事情吧传递网址和参数

import requests
validaror_url = "https://validator.w3.org/nu/"
ip_address = "http://www.artlebedev.ru/"
params = { "doc": ip_address, "out": "json"}

response = requests.get(validaror_url,
                        params=params)

print(response.json())

这会给你输出:

 {'extract': 'аз... -->\n<table border="0" cellpadding="0" cellspacing="0" width="100%">\n<tr v',
   'firstColumn': 1,
   'hiliteLength': 63,
   'hiliteStart': 10,
   'lastColumn': 63,
   'lastLine': 1369,
   'message': 'The “width” attribute on the “table” element is obsolete. Use CSS instead.',
   'type': 'error'},
  {'extract': 'аз... -->\n<table border="0" cellpadding="0" cellspacing="0" width="100%">\n<tr v',
   'firstColumn': 1,
   'hiliteLength': 63,
   'hiliteStart': 10,
   'lastColumn': 63,
   'lastLine': 1369,
   'message': 'The “border” attribute on the “table” element is obsolete. Use CSS instead.',
   'type': 'error'}

发布一切都太过分了。