python爬虫——关于世界各国疫情最新新闻查询系统

import sys
import requests
import json

class yq():
    def __init__(self):
        self.load_url = "https://opendata.baidu.com/data/inner?tn=reserved_all_res_tn&dspName=iphone&from_sf=1&dsp=iphone&resource_id=28565&alr=1&query={}&cb=jsonp_1586658326556_20322"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
        }
        self.tj = []

    # 1.发生请求
    def send_request(self, url):
        data = requests.get(url, headers=self.headers).content.decode("utf-8")
        return data

    # 2.解析数据
    def parse_jsondata(self, data):
        i = data.find("(")+1
        data = data[i:-1]

        data = json.loads(data)

        qq = data["Result"][0]["DisplayData"]["result"]["items"]
        for i in qq:
            a = {}
            a["eventDescription"] = i["eventDescription"]
            a["eventUrl"] = i["eventUrl"]
            a["siteName"] = i["siteName"]
            self.tj.append(a)

    # 3.显示数据
    def show_data(self):
        a = 1
        for i in self.tj:
            print(f'{a}.{i["eventDescription"]}     信息来源:{i["siteName"]}  ')
            a=a+1
        while True:
            print("*" * 125)
            try:
                list = int(input(f'请输入你要具体查看的新闻(如需重新查询国家,请输入0;如需保存所有数据,请输入{a};如需退出程序,请输入{a+1}):'))
                if (list == 0):
                    self.run()
                    break
                elif (list == a):
                    print("保存文件格式为json文件,保存方法后续开发。。。")
                    self.save_data()
                else:
                    print(f'你要查看的新闻是:{self.tj[list - 1]["eventDescription"]}')
                    print(f'信息来源:{self.tj[list - 1]["siteName"]}')
                    print(f'具体内容:{self.tj[list - 1]["eventUrl"]}')
            except:
                if(list==a+1):
                    print("*" * 125)
                    print("程序结束,欢迎您再次使用!!!")
                    print("如程序错误或与作者提出意见沟通交流,请加QQ:923534165,本人菜鸡,欢迎大家批判!!!")
                    sys.exit()
                print("*" * 125)
                print("请输入正确字符")

    # 4.保存数据
    def save_data(self):
        json.dump(self.tj, open(f'{self.GJ}.json', "w"))


    # 5.启动
    def run(self):
        print("*" * 125)
        self.tj = []
        gj = input("请输入你要查看最新新闻的疫情国家:")
        self.GJ = gj+"新型肺炎最新动态"
        # 构造url
        url = self.load_url.format(self.GJ)
        # 发生请求
        data = self.send_request(url)
        # 解析数据
        self.parse_jsondata(data)
        # 显示数据
        self.show_data()
        print("*"*125)

print("*"*125)
print("*"+" "*50+"欢迎使用疫情新闻查询系统"+" "*50+"*")

yq().run()

你可能感兴趣的:(python爬虫)