爬取京东评论信息

一,爬虫需求分析

1,需求。

  我们需要获取多个链接的白酒在2018年评论数量。

2,分析。

  一个商品页面有好几个规格,如图:

评论区我们需要获取的数据是当前选择的商品,而且需要时间顺序为2018年的:

这时候得到的评论有很多页,我们需要一条条的去爬取。

二,误区

因为时间排序以及当前商品评论的限制,我们选择了Selenium作为爬虫工具,写了很久发现时间排序的那个地方不是<select>标签,在标签选取上出现了问题,所以放弃了该方法。

三,productPageComments实现

1,选择本方法的原因

  我们发现我们需要爬取的链接中都有商品ID,而不同规格的商品ID也不同,如果用productPageComments获得评论的话那么相当于解决了仅获取当前商品评论的问题,现在只需要完成2018评论数量的限制了。

2,实现

  通过依此读取链接的方法用for循环页数爬取所有的评论。要是获取的productPageComments中没有评论咋办?只需要让前N页的评论总数与前N-5页对比,若没变化,则说明后面都没有评论了,程序停止。

  2018的限定只需要把爬取的日期取前4位,然后用正则匹配2018即可。

1     for i in data[‘comments‘]:
2         #name = i[‘referenceName‘] #酒的种类
3         time_comment = i[‘creationTime‘][0:4]  #只选择评论时间的年份,若为2018开头则符合要求
4         time_comments.append(time_comment)
5     total_com_num.append(time_comments.count("2018"))  #[每页的评论数],所以得注意所以页码如何处理?

3,总代码

 1 import requests
 2 import json
 3 import re
 4
 5 total_com_num = []  #用于计算总评论数
 6 def getcontent(url):
 7     productPageComments = requests.get(url)
 8     data = json.loads(productPageComments.text[26:-2])  #translate to json
 9
10     time_comments = []  #本容器用于筛选出时间正确的商品
11     for i in data[‘comments‘]:
12         #name = i[‘referenceName‘] #酒的种类
13         time_comment = i[‘creationTime‘][0:4]  #只选择评论时间的年份,若为2018开头则符合要求
14         time_comments.append(time_comment)
15     total_com_num.append(time_comments.count("2018"))  #[每页的评论数],所以得注意所以页码如何处理?
16     return sum(total_com_num)  #返回前i页(note:这个i是page的i)下评论总数。
17
18 if __name__ == ‘__main__‘:
19     link_list = []
20     f = open("1.txt")  # 返回一个文件对象
21     lines = f.readlines()  # 调用文件的 readline()方法
22     for line in lines:
23         link_list.append(line)
24
25     # link = "https://item.jd.com/21391048137.html#comment"
26     # goods_id = int(re.findall(‘\d+‘, link)[0]) # 装你要找的商品的商品ID,[6873309,第二个商品ID,第三个商品ID。。。] 100000766433
27     page = 500  # 页码最大值,如果评论的页码数量大于500则得到的数据会不准确。
28
29     list=[]
30     step = 5  #前i与i-5数量一致的话,代码就停止
31
32     for link in link_list:
33         goods_id = int(re.findall(‘\d+‘, link)[0])  # 装你要找的商品的商品ID,[6873309,第二个商品ID,第三个商品ID。。。] 100000766433
34
35         # 括号为商品ID,为了支持翻页
36         for i in range(page): #i from zero to page
37             url = "https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4640&productId=" + str(goods_id) + "&score=0&sortType=5&page="+str(i)+"&pageSize=10&isShadowSku=0&rid=0&fold=1"
38             list.append(getcontent(url))
39             if (i>step) and (list[i] == list[i-step]):
40                 # print("第",i,"页停止程序!",goods_id,list[-1])
41                 print("第",i,"页停止程序!",list[-1])
42                 break

四,总结

  json和re还不够熟练,有待加强。

原文地址:https://www.cnblogs.com/two-peanuts/p/10260298.html

时间: 2024-10-05 09:40:17

爬取京东评论信息的相关文章

python爬虫实践——爬取京东商品信息

1 ''' 2 爬取京东商品信息: 3 请求url: 4 https://www.jd.com/ 5 提取商品信息: 6 1.商品详情页 7 2.商品名称 8 3.商品价格 9 4.评价人数 10 5.商品商家 11 ''' 12 from selenium import webdriver 13 from selenium.webdriver.common.keys import Keys 14 import time 15 16 17 def get_good(driver): 18 try

爬取京东商品信息和评价的爬虫实现源码

话不多说,直接上源码: var keyword = "d3.js";//@input(keyword, 查询关键字, 爬取该关键字搜索出来的京东商品) var comment_count = 100;//@input(comment_count, 爬取的评论数, 最多爬取多少条评论) var page_count = comment_count / 10; keyword = keyword.trim(); var scanUrls = []; scanUrls.push("

python爬虫:爬取京东商品信息

''' 初级版 ''' import time from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome(r'C:\Users\Auraro\Desktop/chromedriver.exe') num = 1 try: driver.implicitly_wait(10) driver.get('https://www.jd.com/') in

python爬虫实战(一)----------爬取京东商品信息

本文章的例子仅用于学习之用,如涉及版权隐私信息,请联系本人删除,谢谢. 最近一直在练习使用python爬取不同网站的信息,最终目的是实现一个分布式的网络爬虫框架,可以灵活适用不同的爬取需求. 项目github地址: https://github.com/happyAnger6/anger6Spider 在学习的过程中遇到不少问题,在这里做一下总结,并分享出来,希望有兴趣的朋友批评指正,共同学习共同进步. 本着实用至上的目的,不准备过多讲实现细节和原理,直接通过项目需求来边实战边学习,因此本系列文

Java爬虫爬取京东商品信息

<strong> java<em style="color:red;">爬虫</em></strong>工具:Jsoup Maven地址 <dependency> <!-- jsoup HTML parser library @ https://jsoup.org/ --> <groupId>org.jsoup</groupId> <artifactId>jsoup</ar

c# 爬虫爬取京东所有商品信息

在一个小项目中,需要用到京东的所有商品ID,因此就用c#写了个简单的爬虫. 在解析HTML中没有使用正则表达式,而是借助开源项目HtmlAgilityPack解析HTML. 一.下载网页HTML 首先我们写一个公共方法用来下载网页的HTML. 在写下载HTML方法之前,我们需要去查看京东网页请求头的相关信息,在发送请求时需要用到. public static string DownloadHtml(string url, Encoding encode) { string html = stri

python制作爬虫爬取京东商品评论教程

作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论. 京东商品评论信息是由JS动态加载的,所以直接抓取商品详

scrapy爬取京东iPhone11评论(一)

咨询行业中经常接触到文本类信息,无论是分词做词云图,还是整理编码分析用,都非常具有价值. 本文将记录使用scrapy框架爬取京东IPhone11评论的过程,由于一边学习一边实践,更新稍慢请见谅. 1.scrapy开始创建项目: scrapy startproject projectName 2. 进入创建的项目目录: cd projectName 3.以默认的basic模板创建第一个爬虫: scrapy genspider spiderName www.hostDomain.com 好的,这样基

爬取京东上商品的所有详细信息

项目介绍 使用python抓取京东商城商品(以手机为例)的详细信息,并将相应的图片下载下载保存到本地. 爬取步骤 1.选取种子URL:http://list.jd.com/list.html?cat=9987,653,655 2.使用urllib和urllib2下载网页 3.使用BeautifulSoup和re正则表达式解析html 4.保存数据 工具 python2.7 演示效果: 下载的图片: 下载示例: 名称: 摩托罗拉 Moto Z(XT1650-05) 模块化手机 流金黑 移动联通电信