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 `referer_page_url`
其中 referer_page_url 是需要的来源 url , python 生成示例:
def getRandomString(e):
e = 32 if not e else e
t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
r = ""
for i in range(e):
_ = math.floor(random.random()*len(t))
if _ < len(t):
r+= t[_]
return r
def getTimeStamp():
return int(round(time.time() * 1000))
referer_page_id = f"10031_{str(getTimeStamp())}_{getRandomString(10)}"
referer_page_url = f"""http://yangkeduo.com/catgoods.html?opt_id=2715&opt_type=2&opt_name=%e8%a3%99%e8%a3%85&opt_g=1&refer_page_name=search&refer_page_id={referer_page_id}&refer_page_sn=10031"""
文件路径: 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
"""