通过拼多多商品API获取商品信息。
│ .gitignore
│ README.md
│ requirements.txt
│ scrapy.cfg
│
└─pinduoduo
│ email.py
│ items.py
│ main.py
│ middlewares.py
│ pipelines.py
│ settings.py
│ view.py
│ __init__.py
│
├─images
├─spiders
│ pdd.py
│
├─utils
│ anti_content.js
│
└─view
db.png
FZSTK.TTF
pdd.png
show.jpg
...
第三方库 | 描述 |
---|---|
scrapy | pip3 install scrapy |
execjs | pip3 install execjs |
xlrd | pip3 install xlrd |
pyecharts | pip3 install pyecharts |
wordcloud | pip3 install wordcloud |
jieba | pip3 install jieba |
注意:上述安装均在Windows环境下进行时,可能会出现依赖不足而导致安装错误的情况,请自行谷歌解决。
首先,拼多多商品信息接口很容易在谷歌浏览器中找到,但是接口请求中有三个未知参数。其中 filp 和 list_id 参数在网页源码中携带,正则匹配获取即可。而 anti_content 加密参数在每次请求时都需要携带,具体解密过程我不叙述(怕侵权),谷歌有很多。
其次,本项目的可视化部分略带针对性,如果需要匹配到其他商品,需要自行修改代码。
最后,不要设置随机UA中间件(亲测坑),拼多多对请求的请求头检查比较严格,可自行在网页中粘贴 User-Agent 即可。
......
headers = {
'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}
......
yield Request(url=self.search_url + urlencode(data),
headers=self.headers,
callback=self.parse_goods_info,
errback=self.error_back,
dont_filter=True)
已实现的中间件:ProxyMiddleWare(未启用,暂时未发现IP反爬),已实现的管道:ImagePipeline、TextPipeline、ExcelPipeline、MysqlTwisted。
(本次商品的数据分析仅针对搜索参数iPad)
- 2019/4/21 项目整体架构完成
- 2019/4/22 项目部署
已完成scapyd 本地部署。
命令行切换至项目根目录下,运行命令:
>>> scrapy crawl pdd
命令行切换至项目中main.py所在目录下,运行命令:
>>> python main.py
或者 scrapyd-client 打包部署到本地服务器,然后运行命令:
>>> curl http://localhost:6800/schedule.json -d project=pinduoduo -d spider=pdd
本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及拼多多侵权,请邮箱联系,会尽快处理。