0

我正在尝试开发 python 脚本以从 domaintools.com 获取托管公司信息,下面是我的脚本。此身份验证部分有问题,它返回 403 错误。

domain_tools_url = 'https://secure.domaintools.com/log-in/'
username = 'username@gmail.com'
password = 'password'
sys.path.append("./BeautifulSoup")

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, domain_tools_url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener=urllib2.build_opener(authhandler, urllib2.HTTPHandler(debuglevel=0))
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
url = "http://whois.domaintools.com/62.75.xxx.xxx"
page = opener.open(url)

我能知道如何解决这个问题吗?

提前致谢 :)

4

1 回答 1

0

那么我该如何处理这个url =“whois.domaintools.com/62.75.xxx.xxx”

我建议不要解析 html,而是使用 domaintools 自己的 API 以直接的方式获取您需要的数据,而无需走弯路(第 3 方库)

http://www.domaintools.com/api/

DomainTools 每月免费提供 500 个 whois 查询,如果您需要更多,还可以订阅。

import urllib.request
import json

# please take notice that this is only a sample query 
# you usually need to authenticate your request: http://www.domaintools.com/api/docs/authentication/
data = json.loads(urllib.request.urlopen('http://freeapi.domaintools.com/v1/domaintools.com/whois/').read().decode('utf-8'))

def readValues(obj):
    if isinstance(obj, str):
        print(obj)
    elif isinstance(obj, dict):
        for value in obj.values():
            readValues(value)
    elif isinstance(obj, list):
        for item in obj:
            readValues(item)

readValues(data)

它在 Python 3 中,仅供参考

于 2013-01-12T19:25:24.753 回答