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爬虫——关于世界各国疫情最新新闻查询系统
おすすめ
転載: blog.csdn.net/weixin_43912367/article/details/105471482
ランキング