目录
一、环境
win10 + python 3.7 + pycharm64 + selenium
二、简介
抓取京东商品页面信息:商品名称,售价,店铺,分类,订单信息,好评率,评论等----这里以'每周一花'为例
三、京东网页分析
采集思路如下:
此次主要采集以下字段数据:
- title:商品名称
- price:售价
- brand:品牌
- shop_name:店名
- weight:商品重量
- user:适用人群
- classify:商品分类
- comment_num:系列商品总评论数
- praise_degree:系列商品总好评度
- tag_list:系列商品总评价标签
- single_comment_num:当前商品评论条数
- single_tags:当前商品评价标签
- member:顾客会员级别
- star:评星等级
- comment:评语
- pic_num:评论图片数/视频数
- order:订单详情(包含订单形式、下单日期等)
1.获取商品信息入口--商品列表链接获取
爬取商品信息首先得有商品信息入口,这里直接从京东的分类中进入商品列表页面,没有对搜索关键词进行处理,仅处理了商品的页码。
翻看网页,发现共有16页,想用点击下一页(click()的方式)实现翻页,获取每一个商品列表链接。
这里有个坑需要注意:class='pn-next disabled',在第16页依旧可以找到,如果以此设置click() 在第16页后依旧会执行,抓取到别的类目的链接。
踩坑后用设置url的方式获取商品列表链接。
翻看多页发现url里的页码关键字:
page:页码(奇数递增)
s:sku数(page*60+1)
构建请求url:
url='https://search.jd.com/Search?keyword=%E6%AF%8F%E5%91%A8%E4%B8%80%E8%8A%B1&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%AF%8F%E5%91%A8%E4%B8%80%E8%8A%B1&page='+str(i*2+1)+'&s='+str(i*60+1)+'&click=0'
网页对搜索关键词进行了加密,将 ‘ 每周一花 ’ 转化为 ' %E6%AF%8F%E5%91%A8%E4%B8%80%E8%8A%B1 '
可以用 request.unquote()对其解密
一共16页,用for循环获取所有商品列表链接:用urltrue_list接收数据
#获得 京东每周一花的16个商品列表链接 这里可以定义函数,传入要抓取的关键字或页数,使其更加灵活
urltrue_list=[]
for i in range(16):
url='https://search.jd.com/Search?keyword=%E6%AF%8F%E5%91%A8%E4%B8%80%E8%8A%B1&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%AF%8F%E5%91%A8%E4%B8%80%E8%8A%B1&page='+str(i*2+1)+'&s='+str(i*60+1)+'&click=0'
urltrue=request.unquote(url)
urltrue_list.append(urltrue)
2.获取商品信息入口--商品详情链接获取
打开商品列表链接,每一页都有60个商品,如果直接抓取会发现只能抓到30个,原因是:后30条信息是动态加载的