当前位置: 首页 > news >正文

逆向案例四、进阶,爬取精灵数据咨询前五十页数据

python代码示例: 

import csv
import execjs
import requests
f = open('精灵数据.csv','w',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=[
            '标题',
            '发布时间',
            '新闻来源',
            '详情页链接',
            '转自',
            '点击量',
            '新闻作者',
            '发布时间小时',
    
])
csv_writer.writeheader()
data = []
for page in range(1, 51):
    url = 'https://vapi.jinglingshuju.com/Data/getNewsList'
    payload = {
        'page': str(page),
        'num': '20',
    }
    headers = {
        'Accept': 'application/json, text/plain, */*',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language': 'zh-CN, zh;q=0.9',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Origin': 'https://www.jinglingshuju.com',
        'Sec-Ch-Ua': '"Not_A_Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
        'Sec-Ch-Ua-Mobile': '?0',
        'Sec-Ch-Ua-Platform': '"Windows"',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-site',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.0.0 Safari/537.36',
    }
    response = requests.post(url=url, data=payload, headers=headers)
    json_data = response.json()['data']
    data.append(json_data)  #获取所有的密文数据,并存储在data列表中
a = open('练习.js','r',encoding='utf-8').read()
for data in data:
    js = execjs.compile(a)
    mi_wen = js.call('f',data)
    dery_data = js.call('s',mi_wen)
    for i in dery_data['list']:
        dit={
                '标题':i['title'],
                '发布时间':i['news_time'],
                '新闻来源':i['news_source'],
                '详情页链接':i['detail'],
                '转自':i['summary'],
                '点击量':i['hits'],
                '新闻作者':i['news_author'],
                '发布时间小时':i['time_str'],

            }
        print(dit)
        csv_writer.writerow(dit)

js代码示例:

const CryptoJs = require('crypto-js');
function f(data){
    j = "DXZWdxUZ5jgsUFPF";
    z = CryptoJs.enc.Utf8.parse(j)
    data1 = CryptoJs.AES.decrypt(data, z,
        {
            iv: CryptoJs.enc.Utf8.parse(j.substr(0, 16)), mode: CryptoJs.mode.ECB,
            padding: CryptoJs.pad.Pkcs7
                });
            return data1.toString(CryptoJs.enc.Utf8);}

function s(data1){
    return JSON.parse(data1);
}

结果展示:

 

 

相关文章:

  • [java] 23种设计模式之适配器模式
  • React Developer Tools带你掌握9个React组件调试技巧,十分钟学会
  • docekr 安装 Naocs
  • docker通过dockerfile安装sftp教程。
  • 【学习版】Microsoft Office 2021安装破解教程
  • SpringBoot源码解读与原理分析(三十八)SpringBoot整合WebFlux(一)WebFlux的自动装配
  • AGI概念与实现
  • 二维码门楼牌管理系统技术服务:革新城市标识管理的新篇章
  • C++智能指针
  • 【Fastadmin/ThinkPHP5】使用Queue队列方法详细步骤
  • Leetcode 11. 盛最多水的容器
  • Spring八股 常见面试题
  • IDEA开发环境热部署
  • 用冒泡排序模拟C语言中的内置快排函数qsort!
  • vue项目如何解决金额计算超过15出现精度丢失问题
  • 自然语言处理(NLP)技术
  • 前端按钮动画
  • npm install的-S和-D的区别
  • iOS中卡顿产生的主要原因及优化思路
  • Apache Paimon Append Queue表解析
  • 在县中,我看到“走出去”的渴望与“留下来”的惯性
  • 蚂蚁财富28亿港元要约收购耀才证券,筹谋香港券商牌照
  • 本周看啥|在电影院里听民谣,听摇滚,燥起来吧
  • 我国风电光伏装机历史性超过火电
  • 现场|贝聿铭上海大展:回到他建筑梦的初始之地
  • 沈阳市委常委马原出任阜新市委副书记、市政府党组书记