好友
阅读权限25
听众
最后登录1970-1-1
|
Python一键运行即可,帮帮我。
[Python] 纯文本查看 复制代码
import requests
import time
import execjs
import os
import csv
from pathlib import Path
os_path = Path.cwd()
filename = '财联社.csv'
headers = {
"Accept": "application/json, text/plain, */*",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Content-Type": "application/json;charset=utf-8",
"Pragma": "no-cache",
"Referer": "https://www.cls.cn/depth?id=1000",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0",
"sec-ch-ua": "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Microsoft Edge\";v=\"138\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\""
}
cookies = {
"HWWAFSESID": "bc630764eb5f3d84e5",
"HWWAFSESTIME": "1753695684821",
"Hm_lvt_fa5455bb5e9f0f260c32a1d45603ba3e": "1753695687",
"HMACCOUNT": "07A5501315C9A380",
"hasTelegraphNotification": "on",
"hasTelegraphRemind": "on",
"hasTelegraphSound": "on",
"vipNotificationState": "on",
"Hm_lpvt_fa5455bb5e9f0f260c32a1d45603ba3e": "1753699194",
"tfstk": "g-ZIZJ92RBACihoJF2Xwc04rTdiWPOS2VLM8n8KeeDnpwQex_korT8h7PfFY8blz4p4gg-KUYwmyVDmo2s5V0iy_K0mJ7aEtgextHxjy92QZX2t6tLfV0iydSpouQsrzfCkZ1Yn-p43-6OM-FYn-J0KOCYHy9UKLwO6sevTpyHhJXcHrF0h8w0BsBxctp03LwRh73FkNNf2Chana7nvNCoh623EsB_cYdaKZFlHC-beI1sd4fI0IMJh626KUBFlSsoCN5RV8JWkgNi1sDrV_Vqn5AIDQW-itTmQX5DwatoiLc6tEQ4GQWk36e3ntbbgTPW1B-XUU1qDtWLsmQSlTKkU1ECeLgXiKBVSAhR387k00Y1KIDr2EYzFA_elLlYIrqnlfeXTWCqxSCjW1CUYud6Oa0CCuTx3KIAWfCOTq-IxJ4e61CBisJADa4O66u25.."
}
url = "https://www.cls.cn/v3/depth/list/1000"
params = {
"app": "CailianpressWeb",
"id": "1000",
"last_time": str(int(time.time())),
"os": "web",
"rn": "20",
"sv": "8.4.6",
}
def write_dict_to_csv(filename, data_dict):
"""
将单行字典数据写入CSV文件,自动判断是否写入表头,并检查重复数据
参数:
filename: CSV文件名(如 'movies.csv')
data_dict: 单行字典数据(如 {'电影名称': '分手清单', ...})
"""
file_exists = os.path.isfile(filename)
fieldnames = list(data_dict.keys())
# 如果文件已存在,检查是否有重复数据
if file_exists:
with open(filename, 'r', newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
# 将每行数据转换为元组(因为字典不可哈希)
existing_data = [tuple(row.values()) for row in reader]
# 将要写入的数据转换为元组形式进行比较
new_data = tuple(data_dict.values())
if new_data in existing_data:
print(f"数据已存在,跳过写入: {data_dict}")
return False
# 写入数据(包括文件不存在或数据不重复的情况)
with open(filename, 'a' if file_exists else 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
if not file_exists:
writer.writeheader()
writer.writerow(data_dict)
return True
with open ('财联社.js', "r",encoding="utf-8") as f:
js_code=f.read()
ctx=execjs.compile(js_code)
params["sign"]=ctx.call("get_sign",params)
response = requests.get(url, headers=headers, cookies=cookies, params=params).json()
data_list=response['data']
for item in data_list:
dit={"标题":item['title'],
'内容':item["brief"]}
print(dit)
write_dict_to_csv(filename, dit)
print(f"数据已保存到: {filename}")
[JavaScript] 纯文本查看 复制代码
const CryptoJS=require("crypto-js");
function a(e) {
for (var t = 1; t < arguments.length; t++) {
var n = null != arguments[t] ? arguments[t] : {};
t % 2 ? i(Object(n), !0).forEach((function (t) {
r(e, t, n[t])
}
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : i(
Object(n)).forEach((function (t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
}
))
}
return e
}
function c(e, t) {
var n = typeof t
, r = null;
return t === r ? r = i ? r : "".concat(a(e), "=").concat(r) : /string|number|boolean/.test(n) ? r = "".concat(a(e), "=").concat(a(t)) : Array.isArray(t) ? r = function(e, t) {
return t.length ? s(t.map((function(t, n) {
return c("".concat(e, "[").concat(n, "]"), t)
}
))) : a("".concat(e, "[]"))
}(e, t) : "object" === n && (r = function(e, t) {
return s(u(t).map((function(n) {
return c("".concat(e, "[").concat(n, "]"), t[n])
}
)))
}(e, t)),
r
}
function i(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter((function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
}
))),
n.push.apply(n, r)
}
return n
}
function r(e, t, n) {
return t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n,
e
}
function p(e) {
var t = e && s(u(e).map((function(t) {
return c(t, e[t])
}
)));
return t = sync(t),
t = CryptoJS.MD5(t).toString()}
function s(e) {
return e.filter((function(e) {
return e
}
)).join("&")
}
function u(e) {
return Object.keys(e).sort()
}
function sync(e) {
return CryptoJS.SHA1(e).toString()
}
function o(e, n) {
if (void 0 === e || null === e)
throw new Error("Illegal argument " + e);
var r = wordsToBytes(f(e, n));
return n && n.asBytes ? r : n && n.asString ? i.bytesToString(r) : bytesToHex(r)
}
//
// _r={
// "rn": 20,
// "lastTime": 1753695508,
// "subscribedColumnIds": "",
// "hasFirstVipArticle": "1",
// "os": "web",
// "sv": "8.4.6",
// "app": "CailianpressWeb"
// }
// sign=p(a({}, r))
// console.log(sign)
function get_sign(_r) {
sign=p(a({}, _r))
return sign
}
console.log(get_sign())
|
免费评分
-
查看全部评分
|