PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_4(附源码持续更新)

前言

文章涉及内容 闲鱼爬虫 python闲鱼爬虫 闲鱼数据采集 闲鱼自动化数据
涉及技术 python爬虫实战 python爬虫最佳实践 Android爬虫 Android自动化

本系列文章只做自用,具体功能实现未考虑所有情况,只做抛砖引玉之用。如有无法正常使用,请依据源码配合文章讲解自行修改。

代码开源地址

https://github.com/HuRuWo/PickUpTrash

整个系列文章链接

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-1

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-2

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-3

PYTHON爬虫实战:垃圾佬闲鱼爬虫、转转爬虫数据整合自用二手急速响应捡垃圾平台(附源码持续更新)-4

本章内容

之前已经做完了闲鱼数据采集的提交和转发,但是整个闲鱼爬虫系统才刚刚开始。

这一章节介绍核心的服务器部分,作为处理和任务分发中心。服务器的任务主要有以下几大任务。

数据存储

首先编写一个接收传输过来数据的接口

@app.route('/goods', methods=['POST'])
async def index(request):
    """
    商品数据提交接口
    :param request:
    :return:
    """
    print(request.json)
    return text('提交成功')

直接传输到数据库保存

关于数据库的选型我这里不强调 为了让大家看清数据的存储。我直接使用sqlite,非常的轻便。

1.设计sql表字段 我只关心价格 内容 产品名字
2.编写保存 查询等语句

新增文件 data_save.py

创建表语句

self.c.execute('''CREATE TABLE XIANYU_GOODS       (ID INTEGER PRIMARY KEY   AUTOINCREMENT  NOT NULL,       NAME           TEXT    NOT NULL,       PRICE            FLOAT     NOT NULL,       ADDRESS        CHAR(50),       DESCRIBE       CHAR(150),       OTHER         CHAR(100));''')
print("Table created successfully")
self.conn.commit()

插入 查询等

太多就不一一例举了

    def insert_data(self,name,price,address,describe,other):
        sql_ = f"INSERT INTO XIANYU_GOODS (NAME,PRICE,ADDRESS,DESCRIBE,OTHER) VALUES ({name}, {price}, {address}, {describe},{other})"
        self.c.execute(sql_)
        self.conn.commit()
        print("Insert data successfully")

推荐使用SQLiteStudio 推荐使用它来管理sqlite3文件


接口处理数据接收 保存

数据处理

数据保存

@app.route('/goods', methods=['POST'])
async def index(request):
    """
    商品数据提交接口
    :param request:
    :return:
    """
    data = request.json
    # name,price,address,describe,other
    name = data.get('name')
    price = data.get('price')
    address = data.get('address')
    describe = data.get('describe')
    other = data.get('other')
    sql_util.insert_data(name, price, address, describe, other)
    return text('提交成功')

其他的数据处理就不再赘述

包括数据的排序 二次清洗 一些统计 等等功能。我就不再赘述了。说起来也繁琐,但是每个人的要求都不一样。

只要按步骤添加接口对外开放就行。

任务录入和任务分发 可选项

关于任务录入和任务分发和分发这一点,我认为是一个可选项。如果你观察的商品分类非常明确,可以不必做这个功能,但是如果你需要非常高的实时性去更换任务类型,那就可以做个任务录入分发。

录入系统

需要做个后台的界面 也就是前端的输入页面 关于这点我后面在界面编写这一块探讨。

录入的数据 简单设置为 搜索关键字 也就是要搜索哪种数据


task_queue = queue.Queue(maxsize=400000)

@app.route('/task', methods=['POST'])
async def index(request):
    """
    提交任务
    :param request:
    :return:
    """
    data = request.json
    task_queue.put(data.get('task'))
    return text('提交成功')

分发系统

分发系统可以做个轮询 手机方面轮询请求任务的分发,后台对于录入的关键字做分发。

如果手机真的很多的话,需要做手机编号处理。


@app.route('/task', methods=['GET'])
async def index(request):
    """
    提取任务
    :param request:
    :return:
    """
    return task_queue.get()

消息提醒功能

假设我们在不断的处理数据过程中,发现了一个中意的商品需要光速去购买。

我们可能需要直接提示自己去跳转:

以企业微信为例子:

企业微信拉群,创建提醒机器人,获取token:

def __send(api, msg, ats):
    """
    发送消息到企业微信机器人
    """
    body = {
        'msgtype': 'text',
        'text': {
            'content': msg + ' ['+time_util.get_now_str() + ' ' + threading.current_thread().getName() + ']',
            'mentioned_list': ats
        }
    }
    r = requests.post(api, data=json.dumps(body, ensure_ascii=False).encode(), headers={'Content-Type': 'application/json;charset=utf-8'})
    return r.text

比如发送消息给自己:

_send(API_HOOK_L, '你有新的垃圾可以 复制链接打开闲鱼即可前往'
, ['l])

收到消息:

总结

本次的服务器部分到这里了,其实不算完事。因为还有一些界面的东西 包括对于闲鱼数据收集之后 闲鱼数据爬虫等部分的内容都要深入分析。

代码已经开源 喜欢的给个start

PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_4(附源码持续更新)》有9个想法

  1. 你好,我看了一下代码以及几篇教程,但是没有看到闲鱼爬虫的相关东西啊,只看到了手机数据抓取与服务端架设两部分,手机数据的抓取还需要我手动去app上发起请求,能不能我设置了商品名称,过滤价格之后,后台自动抓取,自动保存呢?

    1. 关于自动化的部分后面会提到 当然如果你懂的话可以自己写。推荐几个自动化框架 appium和airtest 或者自己写无障碍代码服务。

  2. 大佬,闲鱼爬虫软件做好了吗,做好的话,能不能租给我?我需要,,,你的联系方式是? 我的V cc001104

  3. 您好,请教一下,我为什么只能抓取到 “https://h-adashx.ut.taobao.com/upload”,抓不到你源代码中的“/promotion/user/promotion/list/”?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注