云裂变营销网

标题: 有没有能抓取微信小程序的采集器或爬虫工具? [打印本页]

作者: 匿名    时间: 2023-3-20 10:50
标题: 有没有能抓取微信小程序的采集器或爬虫工具?
看了很多采集器都是只能抓取网页的数据,现在问题是很多不更新网页了,数据都更新在微信小程序上,求一款能采集微信小程序的工具或采集器
作者: ddd2089    时间: 2023-3-20 10:51
小程序爬虫

前言

对于开发者来说,小程序爬虫是一个非常有用的工具,可以通过爬取不同的数据源来丰富小程序的内容,提升用户体验。本文将介绍如何使用小程序爬虫,采集某些网站的数据,并展示一个具体的案例。
什么是小程序爬虫

小程序爬虫是指利用网络爬虫技术,获取指定目标网站的数据,并将数据以指定格式呈现在小程序上的一种开发技术。通过小程序爬虫,开发者可以在小程序中展示各类内容,包括但不限于新闻、文章、电影信息、音乐等等。
小程序爬虫的优缺点

小程序爬虫的优点有:
小程序爬虫的缺点有:
小程序爬虫的实现方式

小程序爬虫的实现方式有如下几种:
一个小程序爬虫实战

在这个案例中,我们将使用第二种方式,即解析HTML页面的方式,来实现爬虫。这里我选择了豆瓣电影作为目标网站,通过爬虫获取正在上映的电影信息并在小程序中呈现。
1. 分析目标网站

在开始编写爬虫之前,我们需要先分析一下目标网站的网页结构,并确定我们需要抓取的数据。打开豆瓣电影首页,我们可以看到正在上映的电影信息:
我们想要在小程序中展示的信息有:
为了获取这些信息,我们需要对源代码进行解析。
2. 编写爬虫脚本

在这个案例中,我们使用Python来编写爬虫脚本。具体的实现可以分为以下几步:
下面是完整的Python代码:
  1. import requests
  2. from bs4 import BeautifulSoup
  3. # 请求头部信息
  4. headers = {
  5.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
  6. # 豆瓣电影正在上映的URL
  7. url = "https://movie.douban.com/cinema/nowplaying/"
  8. # 发送get请求,获取页面源代码
  9. try:
  10.     response = requests.get(url, headers=headers)
  11.     response.encoding = 'utf-8'
  12. except requests.exceptions.RequestException as e:
  13.     print(e)
  14.     exit(1)
  15. # 解析HTML页面
  16. soup = BeautifulSoup(response.text, "html.parser")
  17. movie_list = soup.find_all("li", class_="list-item")
  18. # 输出数据
  19. for movie in movie_list:
  20.     # 电影名
  21.     title = movie.find_all("a", class_="ticket-btn")[0]['data-subject']
  22.     # 评分
  23.     score = movie.find_all("span", class_="subject-rate")[0].string.strip()
  24.     # 导演
  25.     director = movie.find_all("p")[0].string
  26.     # 演员
  27.     actor = movie.find_all("p")[1].string
  28.     # 输出结果
  29.     print("电影名:", title)
  30.     print("评分:", score)
  31.     print("导演:", director)
  32.     print("演员:", actor)
  33.     print("=======================")
复制代码
上面的代码中,我们首先为请求添加一个User-Agent头部信息,用于模拟浏览器发送请求。然后再发送get请求,获取页面源代码,并使用beautifulsoup4模块解析HTML页面,获取我们需要的信息。最后我们采用print函数将结果输出到控制台上。
在控制台中运行上面的代码,我们可以得到以下结果:
  1. 电影名: 心灵奇旅
  2. 评分: 8.6
  3. 导演: 彼得·多格特
  4. 演员: 安吉丽娜·朱莉 / 丹尼尔·华斯顿 / 杰文·戴维斯 / 克里斯托弗·多尔顿 / 莫西斯·阿里
  5. =======================
  6. 电影名: 致命女人
  7. 评分: 6.4
  8. 导演: 郭帆
  9. 演员: 蔡鹭 / 谭卓 / 宋洋 / 曹炳琨 / 张乃歌
  10. =======================
  11. 电影名: 不管怎样
  12. 评分: 8.1
  13. 导演: 蒂姆·斯卡利
  14. 演员: 安德鲁·加菲尔德 / 蕾蒂西亚·赖特 / Jason Isaacs / Ruth Negga
  15. =======================
  16. 电影名: 杀手保镖2
  17. 评分: 7.0
  18. 导演: 帕特里克·休斯
  19. 演员: 瑞恩·雷诺兹 / 山姆·杰克逊 / 塞缪尔·杰克逊 / 格温妮斯·帕特洛
  20. =======================
  21. ...
复制代码
3. 在小程序中展示数据

上面我们已经获取了豆瓣电影正在上映的电影信息,并将其输出到控制台上。现在我们需要在小程序中展示这些数据。
这里我使用了uni-app框架来开发小程序界面。具体的实现可以分为以下几步:
下面是完整的js代码:
  1. export default {
  2.   data() {
  3.     return {
  4.       movieList: [],
  5.     }
  6.   },
  7.   onLoad() {
  8.     wx.showLoading({
  9.       title: '加载中...',
  10.     })
  11.     wx.request({
  12.       url: 'https://douban.uieee.com/v2/movie/in_theaters',
  13.       header: {
  14.         'content-type': 'json'
  15.       },
  16.       success: res => {
  17.         wx.hideLoading()
  18.         console.log(res.data.subjects)
  19.         this.setData({
  20.           movieList: res.data.subjects
  21.         })
  22.       }
  23.     })
  24.   }
  25. }
复制代码
上面的代码中,我们首先定义了一个movieList变量,用于存储获取到的电影信息。然后在onLoad函数中,使用wx.request方法发送请求,获取豆瓣电影正在上映的电影信息。在请求成功后,通过setData方法将数据传递到wxml中。
下面是完整的wxml代码:
  1. <view class="container">
  2.   <view class="header">正在上映</view>
  3.   <scroll-view class="list" scroll-y="true">
  4.     <view class="movie" wx:for="{{movieList}}">
  5.       <image class="poster" src="{{item.images.large}}" mode="aspectFill"></image>
  6.       <view class="info">
  7.         <view class="title">{{item.title}}</view>
  8.         <view class="score">{{item.rating.average}}</view>
  9.         <view class="director">导演:{{item.directors[0].name}}</view>
  10.         <view class="actor">演员:{{item.casts[0].name}}/{{item.casts[1].name}}</view>
  11.       </view>
  12.     </view>
  13.   </scroll-view>
  14. </view>
复制代码
在上面的代码中,我们展示了电影的封面图、电影名、评分、导演、演员等信息。通过wx:for指令,可以将数据渲染到wxml中。
结论

通过以上的案例,我们可以看出,小程序爬虫是一种非常方便的数据获取方式。在开发过程中,我们需要遵守一些法律法规,确保爬虫的合法性。除此之外,添闻数据公司可以为您提供完整的定制爬虫业务,可以使得数据获取的过程更为便捷。
小程序爬虫
作者: 江苏小鱼儿    时间: 2023-3-20 10:52
小程序云开发之--微信公众号文章采集篇

       相信不少小伙伴都有想过做一个属于自己的小程序,又苦于没有服务器以及备案域名、网站ssl证书等,微信小程序作为前端后端就有很多了诸如Spring全家桶等小程序能接收到后端返回的值需要小程序内添加合法域名(域名备案和https协议)
           这里直接进入教学
公众号中有专门的接口(也有专门的文档) 那么如何采集小程序的文章来做到为我所用呢?
第一步: 获取access_token

通过文档可以看出 想要获取这个access_token需要以下三个参数


(, 下载次数: 186)

其中grant_type的值为client_credential用于获取access_token
appid和secret在公众号内可以找到


(, 下载次数: 206)

完成以上配置之后就可以采集文章了,
我们可以手动访问获取token或者postman等


(, 下载次数: 201)

有了token之后采集文章就很方便了 下面开始操作
从官方文档中可以看到提供的接口还是挺多的


(, 下载次数: 209)

这里拿草稿箱做示范吧 其他的像图文、视频等素材的采集方法都是一样的


(, 下载次数: 193)

第一个token我们已经有了接下来就是offset和count了 最后一个参数可以不要
获取文章数据

获取到素材之后 打印结果


(, 下载次数: 207)

说明我的草稿箱里有三条数据 确实只有三条

(, 下载次数: 201)

文章数据的处理

我们需要把自己需要的参数获取然后添加进数据库
注意这里有个问题就是如果这个文章已经采集过了那么我们就跳过,如果全部数据都存在那么打印 文章已经存在
最后就是把数据库没有的数据放入到数据库中
以下是测试结果


(, 下载次数: 204)

如果全部数据都存在


(, 下载次数: 209)

博客小程序:万神资源小栈  
以上就是所有内容了  更多精彩内容请关注我~
作者: lovesbaobao    时间: 2023-3-20 10:52
前言

数据不再是以直接的网页形式展现,各类微信小程序或APP成为了新的数据源。以前写爬虫程序,都是折腾电脑网页,这次第一次爬取手机端数据,特此记录以备忘。
本次要爬取数据的对象是:西安市市民一码通小程序——停车诱导页面。


(, 下载次数: 211)

一码通页面

根据交换逻辑,手机端信息不过是将网页信息以手机UI形式展现,其运行逻辑和PC版网页没有较大区别。但在实际操作时发现,这玩意与PC网页不同的是,手机端没法像PC端可以直接按F12进入开发者调试页面,那么就得使用工具先把手机请求地址找出来。
Charles简介

“Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).”——————官网介绍
翻译过来就是:它是用来测试网络请求响应交换的监控器。


(, 下载次数: 189)

Charles页面

抓包环节

初步判断

在手机上查看时,发现下拉该页面时页面会弹出请求网址,差点被这个地址给误导了。


(, 下载次数: 207)

电脑端访问这个地址,发现该页面其实是建大静态交通研究院做的停车管理平台,不过得登陆才能进入,对于普通访问者来说,这个请求地址是没有什么用的。
到此为止,大概确定了网址的组成结构应该是:http://zimoiot.com/+XXXX


(, 下载次数: 215)

Charles监测
Charles相关的配置与说明在此不过多赘述,主要是要将手机和电脑保持在同一网络内,在PC端安装证书后,还要在手机上同样安装证书,并设置信任权限和代理。


(, 下载次数: 206)

(, 下载次数: 190)

(, 下载次数: 194)

在配置好相关参数和参数后,操作手机端小程序时即可在Charles上看到相关的请求记录。


(, 下载次数: 214)

确定地址

通过手机点击小程序中的附近停车场列表,翻页查看可以发现是动态网页。根据Charles监测显示,请求方式为POST,请求网址应为https://jianda.zimoiot.com/app/getParkingListGetByDistance,请求data应为所在地经纬度、查找距离、页面显示数量等参数,默认为:“"page": 1, "limit": 10, "userid": "29", "version": "1.0.0", "mchid": "157", "clienttype": "4"”,可将页面显示信息数量和查找范围都设置为99999,意为不限制距离和数量。
Python库
  1. import pandas as pd
  2. import requests
  3. import re
  4. import json
  5. from pandas import json_normalize
复制代码
注意事项

经过多次测试发现,需要注意以下两点:
  1. headers =  {
  2. 'Host':'jianda.zimoiot.com',
  3. 'Content-Type':'application/json',
  4. 'Origin':'https://jianda.zimoiot.com',
  5. 'Accept-Language':'zh-CN,zh-Hans;q=0.9',
  6. 'Accept-Encoding':'gzip, deflate, br',
  7. 'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN miniProgram/wxec4343871c957260',         
  8. 'Referer':'https://jianda.zimoiot.com/big-data/h5/pages/parking/list?lng=XXXXXXXX&lat=XXXXXXXXXX'
  9. }         
复制代码
网页返回


(, 下载次数: 203)

(, 下载次数: 217)

响应结果是较为完整的json结构,为了将结果保存为DataFrame,进而快速存储为Excel文件,这里可通过pandas库0.25.0版本以上自带的json_normalize转换json。
  1. pd.json_normalize(json.loads(res.content)['data']['list'])
复制代码
最终结果

共得到全市4158个停车场信息,包括所在区域、经纬度、泊位数、价格等信息。其中,已使用停车位数量与采集时间有关,应该是实时变化的。

(, 下载次数: 202)

声明

测试纯属科研用途
作者: oats    时间: 2023-3-20 10:53
请问,你找到学习资源了吗
作者: norris_vip    时间: 2023-3-20 10:54
大胸弟莫着急,我来跟你简单说一下微信小程序如何采集
首先类似火车头八爪鱼那种具体的工具就不要想了,
其次,兄弟你可以试试fiddler或者Charles抓包,弄好证书,分分钟抓到接口。
之后如果抓不到的话可以找个安卓手机root掉,然后找出来具体的微信小程序包,解一下也挺方便
最后,看看小程序开发文档,爬虫真的没门槛。




欢迎光临 云裂变营销网 (https://www.yunliebian.com/yingxiao/) Powered by Discuz! X3.4