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

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')

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

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值