python 获取页面动态a的href

本文探讨了如何使用Python解析网页上动态生成的href链接,通过逆向工程JavaScript代码,理解其背后的逻辑,并将其转换为Python实现,最终成功获取动态加载的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 获取页面动态加载的href
分析:
查看源码
1、获取页面中的a标签的href,没有点击不存在href
2、点击后在原页面没有变化的前提显示href,猜测是 触发了onclick事件
__没有在js文件中找到onclick绑定的函数
3、找到页面加载时的js文件,看不懂,开始学习js知识 https://www.bilibili.com/video/av31666355
2019-6-15 17:57:29。。。学习中


学习到一段时间后,发现方向错了,应该看jQuery,https://www.bilibili.com/video/av46598711
so,,,,,
无意发现可以调试js

获取到href的生成过程:

function reurl(a){
	a.href="/item/" + recode(a.id)
};
function recode(a){
	var n=nscaler(a);
	var c=SetObjNum(a.length);
	var d=SetObjNum(a.length);
	n=parseInt(n) + parseInt(d);
	var b=$("#iptstamp").val();
	b=nscaler(b.toString());
	return c + "-" + n + "-" + d + "-" + b
}
function nscaler(a)
{
	var b="";
	$.each(a,function(i,e){
		switch(e){
			case"0":b + ="0";	break;
			case"1":b + ="2";	break;
			case"2":b + ="5";	break;
			case"3":b + ="8";	break;
			case"4":b + ="6";	break;
			case"5":b + ="1";	break;
			case"6":b + ="3";	break;
			case"7":b + ="4";	break;
			case"8":b + ="9";	break;
			case"9":b + ="7";	break
		}
	});
	return b
}
function SetObjNum(n){
	var a="";
	for(var i=0;i<n;i +  + )
		a + =Math.floor(Math.random()*10);
	return a
}
function j(b){
	var c=0;
	$.ajax({
		url:"/details/getrsa/"+b,
		type:"Get",
		dataType:"json",
		error:function(r,t){
			var e=r.responseText?r.responseText:t;
			alert(e)},
		success:function(a){
			if(a.state){
				c=a.id;n(c)
			}
		},
		timeout:1000
	});
	return c
};

换成Python代码:

import math
import random

baseUrl = r'xxx.xxx.xxx.xxx'

class HughJavaScript:
    def __init__(self):
        self._dictStr = {
            '0': '0',
            '1': '2',
            '2': '5',
            '3': '8',
            '4': '6',
            '5': '1',
            '6': '3',
            '7': '4',
            '8': '9',
            '9': '7'
        }

    def _nscaler(self, a):
        b = ''
        for asub in a:
            b += self._dictStr[asub]
        return b


    def _setObjNum(self, n):
        a = ""
        for i in range(n):
            a += str(math.floor(random.random() * 10))
        return a


    def getxiaoquUrl(self, a_id):
        n = self._nscaler(a_id)
        c = self._setObjNum(len(a_id))
        d = self._setObjNum(len(a_id))
        n = str(int(n) + int(d))
        b = '1560605824359'
        b = self._nscaler(b)
        strRet = '{}-{}-{}-{}'.format(c, n, d, b)
        strUrl = r'{}/item/{}'.format(baseUrl, strRet)
        return strUrl

    def getRoomjson1(self, td_id):
        n = self._nscaler(td_id)
        strUrl1 = r"{}/details/getrsa/{}".format(baseUrl, n)
        return strUrl1

def main():
    print(HughJavaScript().getxiaoquUrl('2686'))
    print(HughJavaScript().getRoomjson1('4375405'))

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值