无聊的吃瓜选手 2021-07-24 20:20 采纳率: 100%
浏览 143
已结题

python爬和平精英武器资料

import requests
import parsel
import pandas as pd
def get_response(html_url):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'
    }
    response = requests.get(url=html_url,headers=headers)
    response.encoding = response.apparent_encoding
    return response
def get_arms_info():
    url = 'https://gp.qq.com/cp/a20190522gamedata/pc_list.shtml'
    response = get_response(url)
    selector = parsel.Selector(response.text)
    href = selector.css('#section-container .clear li a::attr(href)').getall()
    titles = selector.css('#section-container .clear li a::attr(title)').getall()
    zip_data = zip(href,titles)
    lis = []
    for index in zip_data:
        index_url = index[0]
        title = index[1]
        dit = {
            '物品名称': index[1],
            '详情页': index[0]
        }
        lis.append(dit)
    pd_data = pd.DataFrame(lis)
    pd.set_option('display.max_columns',None)
    print(pd_data)
    arms_num = input('请输入你要查询的武器序号:')
    arms_url = lis[int(arms_num)]['详情页']
    response_1 = get_response(arms_url)
    selector_1 = parsel.Selector(response_1.text)
    kind = selector_1.css('.wea_class::text').get()
    bullet = selector_1.css('.wea_bullet::text').get()
    skin_list = selector_1.css('.parts_list li .skin_name::text').getall()
    skin_name = '/'.join(skin_list)
    advantage = selector_1.css('.merit_text p:nth-child(2)::text').get()
    defect = selector_1.css('.merit_text p:nth-child(4)::text').get()
    st_hurt = selector_1.css('.merit_rt_st li::text').getall()
    tb_hurt = selector_1.css('.merit_rt_tb li::text').getall()
    print(arms_url)
    print('--'*50)
    print('武器名字:', lis[int(arms_num)]['物品名称'])
    print('武器的类型:',kind)
    print('子弹',bullet)
    print('优点:',advantage)
    print('缺点:',defect)
    print('--'*50)
    print('武器击中身体伤害:')
    print(f'裸装击中身体:{st_hurt[0]}')
    print(f'一级甲击中身体:{st_hurt[1]}')
    print(f'二级甲中身体:{st_hurt[2]}')
    print(f'三级甲中身体:{st_hurt[3]}')
    print('--'*50)
    print('武器击中头部伤害:')
    print(f'裸装击中头部:{tb_hurt[0]}')
    print(f'一级头中头部:{tb_hurt[0]}')
    print(f'二级头中头部:{tb_hurt[1]}')
    print(f'三级头中头部:{tb_hurt[2]}')
    print(f'三级甲中身体:{st_hurt[3]}')
    print('--'*50)
if __name__ == '__main__':
    while True:
        string = """===================================
和平精英资料查询助手v1.0版本(2021.7)
    0.武器 1.配件 2.物资 3.载具
==================================="""
        print(string)
        word = input("请输入你要查询的内容(输入n退出):")
        if word == '0':
            get_arms_info()
        elif word == '1':
            print("正在开发中~~")
        elif word == '2':
            print("正在开发中~~")
        elif word == '3':
            print("正在开发中~~")
        elif word == 'n':
            break
        else:
            print('请正确输入~~')

img
为什么是“枪淘汰”,而不是“3枪淘汰”“多枪淘汰”等
结果:

  • 写回答

1条回答 默认 最新

  • 忍气吞声埋头苦干 2021-07-24 20:48
    关注

    img
    看他的标签结构,你重新写下这块的解析部分

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算