最近想玩魔兽世界正式服,想找个联盟部落势均力敌的服务器,然后找到了网站
100多个服务器,这上面还不能筛选,作为程序猿的我,就拿技术搞他。
看了下F12源码,源码里没有数据,就想到xhr、js这东西。
果断 network ,这货的数据果然是用ajax加载的。
但是这个接口里看不到哪个优势这个数据,我估计他那个优势那个td是前端渲染出来的。
看了一眼源码 ,就是这么干的 。
这个是F12的element出来的结果
这是源码的js
这个是Ajax的接口数据
这不太符合我的要求, 所以我决定上selenium,然后在selenium获取到的源码里使用xpath来处理他这个表格,最后写到txt里。(直接写到excel这个技术我还没学),从txt导入到excel里再分析了,后边我再学学数据分析、可视化什么的。
可以上代码了!
#!/usr/bin/python
from selenium.webdriver import Chrome
from lxml import etree
if __name__ == '__main__':
url = 'http://wowdata.top/player'
web = Chrome()
web.get(url)
web.implicitly_wait(10)
tree = etree.HTML(web.page_source) # selenium 加载页面源代码,给xpath
trs = tree.xpath("//table/tbody/tr")
with open('data.txt', 'w', encoding='utf-8') as file_object:
for tr in trs:
number = tr.xpath("./td[1]/text()") # 编号
server_type = tr.xpath("./td[2]//text()") # 服务器类别
server_name = tr.xpath("./td[3]//text()") # 服务器名称
server_player_count = tr.xpath("./td[4]/text()") # 总人数
alliance_player_number = tr.xpath("./td[5]/text()") # 联盟总人数
horde_player_number = tr.xpath("./td[6]/text()") # 部落总人数
advantage = tr.xpath("./td[7]//text()") # 部落联盟人数优势
content = f'{number[0]},{server_type[0]},{server_name[0]},{server_player_count[0]},{alliance_player_number[0]},{horde_player_number[0]},{advantage[0]}'
file_object.write(content+'\n')
# time.sleep(3600) # 这个地方一开始弄的时候,打开浏览器就关闭了 ,我就给他加个时间不让浏览器关闭,代码都写完了 就给这行注释了
web.close()
整到excel就这样的 。
部落优势82个,联盟优势42个,势均力敌9个。
国服还是部落人多啊 。