小程序获取网页数据问题

wx.request({
  url: 'http://study7.cn/user/getFile.php?fid=753'//请求接口的地址,必须基于 https 协议
  method:'GET'//请求的方式
  data:{//发送到服务器的数据
   
  },
  success:(res)=>{//请求成功后的回调函数
    console.log(res);
  }
})

下面是网页数据!

img

要求做个输入框,用户输入对应网页数据的数字串时显示对应的下载地址!

比如:用户输入911100000000000显示网页数据里下方对应的下载地址!

网页的数据有很多,可能上百条!

如何做到直接调取对应下载地址呢?

直接上代码!不会写

http://study7.cn/user/getFile.php?fid=753

这个网址你能控制没有,小程序发布后是要验证域名的,不是需要自己服务器搭建代理获取上面url的数据才行。如果只是开发工具测试,要勾选不校验域名才行

img


示例代码链接:
https://developers.weixin.qq.com/s/LOe3Zem175IG

示例中源代码如下
index.wxml

<view style="padding: 20rpx;">
<input class="input" placeholder="输入内容" bindinput="getUrl" />
<view style="word-break: break-all;" wx:if="{{downLoadUrl}}">
    下载地址:{{downLoadUrl}}
</view>
</view>



index.js

Page({
  data: {
    kv:{},
    downLoadUrl:''
  },
  onLoad(){
     wx.request({
       url: 'http://study7.cn/user/getFile.php?fid=753',
       method:'GET',
       success:(res)=>{
          let arr=res.data.split('\n'),kv={}
          for(let i=0;i<arr.length;i+=2) kv[arr[i]]=arr[i+1];
          this.setData({kv});
       }
     })
  },
  getUrl(e){
    let key=e.detail.value,downLoadUrl=this.data.kv[key]||'';
    this.setData({downLoadUrl})
  }
})
 

来自NewBing和LP的编写:

这个问题可以通过将获取到的数据存储在一个对象(键值对)中,然后根据用户输入的数字串作为键来获取对应的下载地址来解决。这个对象可以在页面的data中定义,然后在请求成功的回调函数中更新。

在小程序页面的wxml文件中,可以添加一个输入框和一个按钮,输入框用于输入数字串,按钮用于提交输入的数字串并获取对应的下载地址。

首先,解析获取到的网页数据,并将它转换为一个对象,键是数字串,值是对应的下载地址。接着,当用户在输入框中输入数字串并点击按钮时,可以通过在对象中查找该数字串来获取对应的下载地址。

以下是具体的代码实现:

在页面的JS文件中:

Page({
  data: {
    inputVal: "", // 用户输入的数字串
    downloadLinks: {}, // 存储数字串和对应的下载地址
    downloadLink: "", // 用户输入的数字串对应的下载地址
  },
  onLoad: function (options) {
    wx.request({
      url: 'https://study7.cn/user/getFile.php?fid=753',
      method:'GET',
      success: (res) => {
        let lines = res.data.split('\n');
        let links = {};
        for (let i = 0; i < lines.length; i += 2) {
          links[lines[i]] = lines[i + 1];
        }
        this.setData({ downloadLinks: links });
      }
    });
  },
  inputChange: function(e) {
    this.setData({ inputVal: e.detail.value });
  },
  getDownloadLink: function() {
    let link = this.data.downloadLinks[this.data.inputVal];
    if (link) {
      this.setData({ downloadLink: link });
    } else {
      wx.showToast({
        title: '没有找到对应的下载地址',
        icon: 'none',
        duration: 2000
      });
    }
  }
});

在页面的WXML文件中:

<input type="text" placeholder="请输入数字串" bindinput="inputChange" />
<button bindtap="getDownloadLink">获取下载地址</button>
<p>下载地址:{{downloadLink}}</p>

这样,用户就可以输入数字串并点击按钮来获取对应的下载地址了。如果输入的数字串在获取到的数据中存在,那么下载地址会被显示出来,否则会弹出一个提示告诉用户没有找到对应的下载地址。

注意,微信小程序中的请求接口地址必须是https协议的,并且在小程序后台的“开发设置”中的“服务器域名”中进行了配置。在你的示例代码中,url是'http://study7.cn/user/getFile.php?fid=753%27%EF%BC%8C%E8%BF%99%E6%98%AFhttp%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%AF%BC%E8%87%B4%E8%AF%B7%E6%B1%82%E5%A4%B1%E8%B4%A5%E3%80%82%E5%9C%A8%E5%AE%9E%E9%99%85%E5%BC%80%E5%8F%91%E4%B8%AD%EF%BC%8C%E8%A6%81%E5%B0%86%E5%85%B6%E6%94%B9%E4%B8%BAhttps%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%B9%B6%E7%A1%AE%E4%BF%9D%E5%9C%A8%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%90%8E%E5%8F%B0%E8%BF%9B%E8%A1%8C%E4%BA%86%E9%85%8D%E7%BD%AE%E3%80%82

首先使用get请求抓取网页数据,然后用空格分割成数组对象,然后和用户输入的下载码进行比较,如果相等的话,获取相等元素的索引+1 就是实际资源的下载地址