python之selenium和xpath简单知晓国服魔兽世界正式服人口普查

博主通过Python的selenium库抓取了一个魔兽世界服务器列表网站的数据,利用XPath解析HTML,获取服务器的联盟与部落人数对比,最终将数据保存到txt文件中,并计划进行进一步的数据分析和可视化处理,以了解服务器势力分布情况。
摘要由CSDN通过智能技术生成

最近想玩魔兽世界正式服,想找个联盟部落势均力敌的服务器,然后找到了网站
在这里插入图片描述
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个。
国服还是部落人多啊 。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值