python爬虫爬取微信公众号小程序信息

it2025-04-10  18

python爬虫爬取微信公众号小程序信息

爬取内容

某汽车维修信息提供的维修店名称,地点以及电话(手机)号码

爬取步骤

啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles

抓包:将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。

进入小程序主界面如下:

我们可以发现左上有一个定位选择地点的选项,点击后查看charles,仔细查看,我们会发现一个名为GetRegionOptions的json,里面有关于每个城市省份的name和一个value值,有什么用我们待会再讲,我们先随便选择一个城市–湖南

然后再点击主界面的汽车维修,再看抓取到的内容,同样能看到每个选项以及id,每个id代表单独一项,以此来识别不同类别的数据

我们点击小车维修,再次查看寻找,会发现我们已经找到了自己想要的东西(英文翻译很直观!)

既然找到我们需要的数据在哪,然后我们就要发送请求来获取我们所需要的数据,那我们怎样获取到指定数据呢?如某个省份某个市某种类型车的数据,前面分析的时候我们就已经知道,可以在请求的时候带上data ,里面包含了各项的id,这样就能准确获取数据,只需要将其整理在一起,遍历其就能自动化获取数据

具体代码在下面

源代码:

import requests import json import xlrd import xlwt title = ['name','contactPhone','cityName'] url_car = 'http://api.tc688.net/api/services/app/merchant/LoadCategoryMerchants' headers = { 'accept':"application/json", 'Origin':"http://zazhi.tc688.net", 'Cache-Control':'max-age=0', 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1301.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat", 'Accept-Encoding':"gzip, deflate", 'Referer':'http://zazhi.tc688.net/companylist?id=148', 'Accept-Language':"zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4", } # 判断是否爬完 def end_run(result): if len(result): #当result为空(长度为0)则代表爬完 return 0; else: return 1; # 获取我们想要的数据 def get_datas(index): data = {"pageIndex":index,"pageSize":50,"regionId":"32","categoryId":"148","orderRule":0} res = requests.post(url=url_car, headers=headers, data=data) js = json.loads(res.text) return js.get("result") # 处理数据并存储到表格 def dealdata(xls_name, sheet_name): k = 0 # 累加计算有多少个数据 page = 1 wb = xlwt.Workbook(xls_name) worksheet = wb.add_sheet(sheet_name) for i in range(len(title)): worksheet.write(0,i,title[i]) while(page): page+=1 datas = get_datas(page) if end_run(datas): print('数据获取结束') break for i in datas: worksheet.write(k+1,0,i['name']) worksheet.write(k + 1, 1, i['contactPhone']) worksheet.write(k + 1, 2, i['cityName']) k+=1 print(f"正在获取第{k}个数据 名称:{i['name']} 手机{i['contactPhone']}") wb.save(xls_name) if __name__ == '__main__': ### 要将数据存储到的文件和地点名称 dealdata('datas.xls','chongqing')

注:代码只简略爬取了一个城市的数据,懒.

最新回复(0)