一、题目
二、链接
方法一:影刀应用分享: 高级考试题2-第二次
方法二:影刀应用分享: 高级考试题2
三、代码
方法一:
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from xbot_extensions import activity_f026eecc
from collections import defaultdict
from xbot_extensions.activity_759a3f99 import process2def main(args):web_object=xbot.web.create('https://mock.jsont.run/6zA7NH6ciqxNxGYzKO-Zx','chrome')web_text=web_object.get_text()data=activity_f026eecc.main(web_text,'data')[0]country_box_office=defaultdict(int)score_box_office=defaultdict(int)newdata=[]for i in data:country_box_office[i['制片地区']]+=int(i['票房'])try:if i['评分']=='-':score_box_office['无评分']+=int(i['票房'])elif 3.0<=float(i['评分'])<=3.5:score_box_office['3.0-3.5']+=int(i['票房'])elif 9.0<=float(i['评分'])<=9.5:score_box_office['9.0-9.5']+=int(i['票房'])else:passexcept Exception:score_box_office['无评分']+=int(i['票房'])TOP3_country_box_office=sorted(country_box_office.items(), key=lambda item: item[1], reverse=True)[:3]print(country_box_office)print(TOP3_country_box_office)for i in TOP3_country_box_office:newdata.append(['蓝悦',i[0],i[1]])for k,v in score_box_office.items():newdata.append(['蓝悦',k,v])print(newdata)web_object.close()result = process2(host="43.143.30.32",port=3306,username="yingdao",password="9527",database_name="ydtest",sql_sentence="INSERT INTO result VALUES (%s, %s, %s)",two_dim_list_data=newdata,line_per_connection=1000,database_type="MySQL",tds_version=None # MySQL无需TDS版本)return '插入数据成功'
方法二:
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import requests
import pymysql
import json
from collections import defaultdict
def get_data():url = 'https://mock.jsont.run/6zA7NH6ciqxNxGYzKO-Zx'response = requests.get(url)country_box_office = defaultdict(int)for obj in response.json()["data"]:country = obj["制片地区"]box_office = int(obj["票房"])country_box_office[country] += box_officetop_countries = sorted(country_box_office.items(), key=lambda x: x[1], reverse=True)[:3]formatted_top_countries = [['蓝悦', country, box_office] for country, box_office in top_countries]rating_intervals = {"3.0-3.5": 0,"9.0-9.5": 0,"无评分": 0}for obj in response.json()["data"]:rating = obj.get("评分")box_office = int(obj["票房"])if rating is None or rating == "" or rating == '-':rating_intervals["无评分"] += box_officeelse:try:rating_float = float(rating)if 3.0 <= rating_float <= 3.5:rating_intervals["3.0-3.5"] += box_officeelif 9.0 <= rating_float <= 9.5:rating_intervals["9.0-9.5"] += box_officeexcept ValueError:print(f"Invalid rating format: {rating}")rating_intervals["无评分"] += box_officeformatted_rating_intervals = [['蓝悦', interval, box_office] for interval, box_office in rating_intervals.items()]newdata = formatted_top_countries+formatted_rating_intervalsprint(newdata)conn = pymysql.connect(host="ip",port=3306,user='yingdao',passwd='9527',db='ydtest',charset='utf8mb4')cursor = conn.cursor()print('开始写入数据库')for row_data in newdata:print(row_data)sql = """INSERT INTO result (提交人,信息,票房总数)VALUES (%s, %s, %s)"""cursor.execute(sql, row_data)conn.commit()cursor.close()conn.close()def main(args):get_data()return "运行成功"