前言
上一篇讲述了通过selenium找到按钮的位置,然后通过模拟鼠标的行为,点击按钮,遍历表格中的内容。这次是针对表格内容的处理。
表格内容的处理
我们可以看到最全的表格内容,包括规格名称、核数、内存、按小时、包月、包一年、包2年等11列内容,但是我们通过点击按钮,发现并不是所有的表格都有这12项内容。
在这个表格里只有9项内容。
这个表格只有7项内容。
通过我的寻找,最少的表格只有5项内容。
因此这5项内容是基本内容,我先把这5项内容找出来。但是,有些云服务器的按小时是没有的,他用“–”表示,为了方便管理,我全部赋值为0
tandard_name = tr.find_elements_by_tag_name("td")[0].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
info.append(standard_name)#规格名称
cpu_count = tr.find_elements_by_tag_name("td")[1].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
info.append(cpu_count)#核数
memory = tr.find_elements_by_tag_name("td")[2].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
info.append(memory)#内存
unit = tr.find_elements_by_tag_name("td")[-1].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
info.append(unit)#单位
charge_hour = tr.find_elements_by_tag_name("td")[3].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
if(charge_hour=="--"):
charge_hour="0"
info.append(charge_hour)#按小时
对于“包月”的处理。
charge_month = tr.find_elements_by_tag_name("td")[4].find_element_by_class_name("cell-normal").find_element_by_tag_name("span").text
if(charge_month=="--"):
charge_month="0"
if(charge_month!="元"):
info.append(charge_month)
对“包1年”、“包2年”等各项的处理
for j in range(5,num-1):
charge=tr.find_elements_by_tag_name("td")[j].find_element_by_class_name("cell").text
if(charge=="--"):
charge="0"
info.append(charge)
这样就可以爬取到所有云服务器的信息
我将信息保存到CSV文件中
name=["区域","CPU架构","规格","类型","镜像","规格名称","核数","内存","价格单位","按小时","包月","包1年","包2年","包3年","包4年","包5年"]
test=pd.DataFrame(columns=name,data=center_info)
test.to_csv("D:/test3.csv")
总结
下一次的内容就是将爬取的内容经过清洗、处理、转换以后导入数据库中。