京东爬取评论简单分析

京东爬取评论简单分析

1.定义一个获取所有评论的函数

def get_comment(url):
"""
获取评论函数
"""
i = 0
# 获取所有的评论,直到正则匹配为空的时候停止
while True:
    url = "http://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv6&productId=11510787177&score=0&sortType=5&page=" + str(i) + "&pageSize=10&isShadowSku=0&fold=1"
    headers = {"User-Agent": random.choice(ua), }
    response = requests.get(url, headers=headers)
    # 评论列表
    comment_list = re.compile(r'"content":"(.*?)"').findall(response.text)
    for comment in set(comment_list):
        # 打印评论
        print comment
    # 评论终止的条件
    if len(comment_list) == 0:
        break
    i += 1

2.先获得你搜索关键词的url:

#keyword是你搜索的关键词,每类商品基本都是100页,京东page页数是奇数变化
for j in range(101):
    url = "https://search.jd.com/Search?keyword=%E7%94%B7%E8%A1%A3&enc=utf-8 &page=" + str(j)

3.根据这个url就可以获得商品列表的前28个数据,一共有60个,另外有四个广告:

res = requests.get(url, headers=headers
# 使用正则提取出商品的id字段
id_list =re.compile('J_AD_(\d+)').findall(res.content)
# print len(id_list)
# 定义一个列表来存放所有的id
str_id = []
for id in id_list:
    # 详细页面的url
    detail = "http://item.jd.com/"+str(id)+".html"
    # 添加id到列表
    str_id.append(id)
    # 这个是获取评论的url
    comment_url = "http://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv6&productId="+str(id)+"&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
    # 调用获取评论的函数
    get_comment(comment_url)
# 拼接id
str_id = ",".join(str_id)

4.另外的28条数据是动态加载的,鼠标下载的时候会加载出来,加载这个是要根据前面页面的id信息和翻页信息,

# 这是加载出来的url,其中后面的str_id是前面获取所有的id的拼接在一起,用,隔开
url2= "https://search.jd.com/s_new.php?keyword=%E7%94%B7%E8%A1%A3&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E7%94%B7%E8%A1%A3&page="+str(j+1)+"&s=25&scrolling=y&log_id=1504059001.28625&tpl=3_L&show_items=" + str_id
# 这个是拼接请求的头,分析得到这个Referer字段
headers_page = "https://search.jd.com/Search?keyword=%E7%94%B7%E8%A1%A3&enc=utf-8&page="+str(j)+"&s=1"
# 其中请求头要添加 Referer字段,上一页的关联地址,头的page是请求主页的page
headers_next = {"User-Agent": random.choice(ua),
           "Referer": headers_page}

# 获取后面的数据
url2= "https://search.jd.com/s_new.php?keyword=%E7%94%B7%E8%A1%A3&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E7%94%B7%E8%A1%A3&page="+str(j+1)+"&s=25&scrolling=y&log_id=1504059001.28625&tpl=3_L&show_items=" + str_id
headers_page = "https://search.jd.com/Search?keyword=%E7%94%B7%E8%A1%A3&enc=utf-8&page="+str(j)+"&s=1"
# 其中请求头要添加 Referer字段,上一页的关联地址
headers_next = {"User-Agent": random.choice(ua),
           "Referer": headers_page}
# 发送请求
res1 = requests.get(url2, headers=headers_next)
# 使用正则得到id的列表
id_list2 = re.compile('J_AD_(\d+)').findall(res1.content)
for id2 in id_list2:
    # 详细页面的url,
    detail_url = "http://item.jd.com/"+str(id2)+".html"
    # 评论的url
    comment_url = "http://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv6&productId="+str(id2)+"&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"
    # 调用评论函数
    get_comment(comment_url)
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值