由于实验需要获取url的一些whois信息,上网搜了一些能够查询whois信息的网站,最后发现站长之家最全面,因此,这里记录一下如何通过站长工具来批量获取url信息的。
站长之家网址:http://tool.chinaz.com/
1.使用Python获取JS渲染后的全部html页面内容,也就是chrome中右键-检查里能看到的代码内容。当然,在此之前你需要安装配置一下python+selenium+chrome。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://seo.chinaz.com/fanyi.youdao.com')
print(browser.page_source) # 这个就是包含所需信息的html代码
2.下面就是通过上述代码获得的html(截取的一部分),里面包含以下信息以下信息。我需要获取到其中的一些信息,比如域名年龄后的那段内容。
<tr>
<td class="_chinaz-seo-newtl _chinaz-seo-newh78 bg-grayf8"><i class="iconfont iconyuming pr5"></i>域名信息</td>
<td class="_chinaz-seo-newtc _chinaz-seo-newh78">
<div>
<span class="mr50">
注册人/机构:
<i class="color-63">
Alibaba Cloud Computing (Beijing) Co., Ltd </i>
</span>
<span class="mr50">
注册人邮箱:
<a href="//whois.chinaz.com/reverse?host=**mainabuse@service.aliyun.com&ddlSearchMode=1&domain=fanyi.youdao.com" target="_blank">
<i class="color-63">
**mainabuse@service.aliyun.com
</i>
</a>
</span>
</div>
<div>
<span>
域名年龄:
<a href="//whois.chinaz.com/fanyi.youdao.com" target="_blank">
<i class="color-63">
18年5月9天(过期时间为2021年06月15日)
</i>
</a>
</span>
</div>
</td>
</tr>
3.然后就可以通过selenium定位元素的方式或者什么方法获得想要的那一段信息。
一个例子:
1.图片是这个网址http://seo.chinaz.com/seo.chinaz.com的网页内容,红框内是我需要的信息。
2.以下代码是我获得这个信息的方式:
from selenium import webdriver, common
option = webdriver.ChromeOptions()
option.add_argument('headless') # 为了不打开网页的情况下获取内容
dirver = webdriver.Chrome(chrome_options=option)
dirver.get('http://seo.chinaz.com/seo.chinaz.com')
liuliang_webuv= dirver.find_elements_by_class_name("webuv")[0].text # 这个是网站流量
alexarank = dirver.find_elements_by_class_name("alexarank")[0].text # 这个是ALEXA世界排名
print(liuliang_webuv) #这个是网站流量
print(alexarank) # 这个是ALEXA世界排名
打印结果如下:
3.但是有一个问题,就是获取速度太慢了,如果我要批量获取一万条url的数据需要很久很久。
另外一种获取方式
以下是我通过request库和BeautifulSoup库获取whois.chinaz.com中的创建时间和过期时间信息的代码,通过这种方式我只能获取这两个信息,因为request库只能获取源代码不能获取js渲染后的HTML。但比上面的方法快很多。
import urllib.request
import re
from bs4 import BeautifulSoup
from distutils.filelist import findall
req_whois = urllib.request.urlopen('http://whois.chinaz.com/doucube.com')
# print(req_whois.read().decode()) # 打印出查询页整个html
contents = req_whois.read().decode()
bsObj = BeautifulSoup(contents,"html.parser")
m_Day = []
m_birth = bsObj.find("div", text="创建时间").next_sibling.find("span").get_text() #获取创建时间
m_sib = bsObj.find("div", text="过期时间").next_sibling.find("span").get_text() #获取过期时间
print(m_birth)
print(m_sib)