某镜市场情报面试1题

试题链接:
http://wquan.moojing.com/quiz/index.html
源代码:

import re
import time
import requests
from lxml import etree

now_time_tamp = int(time.time() * 1000)

class Mojing(object):
    def __init__(self):
        self.baseurl = 'http://wquan.moojing.com/quiz/index.html'
    def getItemList(self):
        # 获取首页
        rous = requests.get(self.baseurl)
        rous.encoding = 'utf-8'
        # lxml解析
        html = etree.HTML(rous.text)
        item_list = html.xpath('/html/body/div[1]/li/text()')
        # 解析结果
        print("lxml解析结果: ", item_list)

    def get_ajax_data(self, sign, itemid):
        url = 'http://wquan.moojing.com/get_data?itemid=' + str(itemid) + '&time=' + str(now_time_tamp) + '&sign=' + sign
        head = {
            'Connection': 'keep-alive',
            'Host': 'wquan.moojing.com',
            'Referer': 'http://wquan.moojing.com/quiz/index.html',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36',
            'X-Requested-With': 'XMLHttpRequest',
        }
        # http://wquan.moojing.com/get_data?itemid=595843737123&time=1623398059822:>:=98<8<678jfx~6;788>=5:>=77
        rous = requests.get(url, headers=head)
        print("Ajax请求返回值: ", rous.text)
        skuids = re.findall('skuId=.\d+', rous.text)
        print("匹配到的skuid值: ", skuids)

    def get_ajax_sign(self):
        # itemid = '595843737123'
        # 将itemid设为12345678
        itemid = '12345678'
        # item_id参数 , 时间戳参数
        str_longs = str(itemid) + 'easy' + str(now_time_tamp)
        print("被加密字符串", str_longs)
        str_end = ''
        # 遍历字符串 对应ascii码+5 再返回其对应字符串
        for str_long in str_longs:
            str_end = str_end + chr(ord(str_long) + 5)
        print("sign算法结果:", str_end)
        self.get_ajax_data(str_end, itemid)

Mojing().getItemList()
Mojing().get_ajax_sign()

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值