Skip to content
pdd (拼多多) 爬虫 js 解密 anti_content 参数解密及全站抓取代码思路实现
Python
Branch: master
Clone or download
Latest commit 021ed77 Apr 2, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
pin_duoduo Update pdd_search.py Mar 29, 2019
.gitattributes Create .gitattributes Mar 9, 2019
1.txt Add files via upload Mar 7, 2019
Get_c.js Add files via upload Mar 7, 2019
Get_i.js Add files via upload Mar 7, 2019
Get_s.js Add files via upload Mar 7, 2019
Get_u.js Add files via upload Mar 7, 2019
README.md Update README.md Apr 2, 2019
merge.js Update merge.js Mar 29, 2019
pdd.py Update pdd.py Mar 29, 2019

README.md

更新

    !!!拼多多策略修改, 列表页及搜索页都需要在请求头中加 'AccessToken': "登录后的 token", 才可以访问!!!
    !!!或者 IP 质量较好,直接访问也是可以获取数据的!!!

拼多多加密参数解析

    1.txt     -> 测试获取的数据
    pdd.py    -> python 运行文件
    merge.js  -> 获取 anti_content 加密参数的 js 合并文件

    Get_c
    Get_i
    Get_s
    Get_u

    上述四个 js 文件是为了解密 anti_content 参数而需要的 4 个对象(在 merge.js 中已经包含使用, 这里是为了方便查看)

测试使用

    运行代码(会生成 1.txt 文件将获取数据写入):

        python3 pdd.py

    只获取 anti_content 结果: 

        node merge.js

全站抓取

步骤一: 获取一级二级分类,并处理

    文件路径: pin_duoduo/pin_duoduo/utils.py
    执行过程: process_first() => 生成 pdd_first.json 文件
    执行结果: 一级分类二级分类信息保存完成

步骤二: 进行准备工作, 获取三级分类

    文件路径: pin_duoduo/pin_duoduo/spiders/readyWork.py
    执行过程: 通过运行 scrapy 爬虫 readyWork 获取二级分类的首页来获取三级分类 => 生成 work.json 文件
    执行结果: 三级分类信息保存完成

步骤三: 获取列表数据(只进行到这一步, 没有进详情页, 基本数据在列表页即可获取完成)

    文件路径: pin_duoduo/pin_duoduo/spiders/pdd.py
    执行过程: 通过运行 scrapy 爬虫 pdd 循环获取列表数据(测试只获取 5 页数据) => 生成 data.json 文件
    执行结果: 总体流程完成,数据获取成功

说明

    """
        pdd_sanic 是使用 sanic 简单写的一个 web 服务, 通过 post api 来获取数据(没有使用)
    
        使用方式: 首先运行 run.py 文件, 然后运行 _test.py 即可看到效果
    """
    
    """
        pdd_search.py 是搜索接口数据获取的方式, 可以用来帮助改写成按关键字搜索的爬虫
    """
    
    
    """
        randomproxy.py 是自定义的 scrapy 中间件, 实现代理更换 | user-agent 更换 | 请求出错时更换代理并重爬等功能, 
        可以直接将这个中间件应用到其它 scrapy 爬虫项目中
    """
    
    
    """
        pipelines.py 中直接使用 scrapy 提供的 exporters.JsonItemExporter 进行数据存储, 
        并且在存储列表数据时直接将 json 数据保存, 并没有定义 item 
    """
You can’t perform that action at this time.