1.当网页打开的方式不同时,在开发者选项找到的包含评论的文件地址不同,比如第一种,当我们找到的评论界面是含有下一页选项的时候(如下图)。我们在左边文件界面发现包含评论的网页地址名字为‘'productPageComments.action'开头的,点开查看header和response可以分析得网址的规律,Query string  parameters 里面的page对应着评论的页面,改变这个参数就可以实现评论网页的翻页了。

对于网页的内容点开response可以看见是json格式的网页,所以复制下来可以用在线的json在线解析工具解析一下,看清楚网站的结构。我随便找了个json解析的网站,分析了一下这个网页的结构。

2.当评论网页是以另外一种方式打开,如下图,打开后网页可以一直往下拖自动加载评论,不需要点击下一页(也不包含下一页选项)。这时我们在左边的文件选项中找到包含评论的网页地址名字为‘'getcommentlist'开头的,其他的内容和上面一样,找到url的规律,再到网站里用爬虫规则来提取需要的信息。

3.小技巧,当打开开发者选项时,在network里面文件特别多,找到想要的文件比较困难,可以按住'ctrl +shift+F',调出search选项,键入关键词,在打开的文件中查找包含关键词的文件。如下图,查找包含‘评论’的文件

4.因为这些动态网页通常都是脚本(json,xml)可以点击'Type'选项对文件进行自动归类,在script类型中找相应的评论文件,这样可以接更清晰,一目了然,如下图

5.爬取的代码

整体爬取的思路,首先,确定爬去的网页是否是动态网页,如果直接对爬取网页打开源代码可以看见所有的需要的信息,并且可以直接获得每一页的网页的url,那么静态网页就不需要上面的那些操作了,直接看源代码用写爬虫了。如果针对某一产品打开不同网页的评论页面但是url地址都不变,说明隐藏了url的其他部分,鉴定为动态网页,运用上面的方法打开开发者选项,找到对应的爬去的网页的文件,获取url参数,找到地址变动的规律,一般都是页面page的变动。找到url地址就好办了,找到某一个爬取页面,分析页面结构,用requests,BeautifulSoup,re等抽取需要的信息。下面是爬取京东小米手机的代码,因为网站反扒,所以限定了爬去的时间,不然爬太快会报错。关于json之前不太明白,查了一下后就是网页用字典形式来变现出来,网页结构清晰,易于处理。这里爬的网页就是json格式。

 1 from bs4 import BeautifulSoup
 2 import requests
 3 import re,json
 4 import pandas as pd
 5 import time
 6
 7 #京东小米官方网站爬取小米6X的评论
 8 #动态网页爬取
 9
10 def getHtml(url,data): #只输入URL的主体部分,后面的参数用下面的字典附加上
11     try:
12         r=requests.get(url,params=data)
13         r.raise_for_status()
14         r.encoding=r.apparent_encoding
15         return r.text
16     except:
17         print('爬取失败')
18
19 def getComment(html):#获得一页的评论
20     commentList=[]
21     i = json.dumps(html)  # 将页面内容编码成json数据,(无论什么格式的数据编码后都变成了字符串类型str)
22     j = json.loads(i)  # 解码,将json数据解码为Python对象
23     # print(type(j))
24     comment = re.findall(r'{"productAttr":.*}', j)  # 对网页内容筛选找到我们想要的数据,得到值为字典的字符串即'{a:1,b:2}'
25     #print(comment)
26     comm_dict = json.loads(comment[0])  # 将json对象obj解码为对应的字典dict
27     # print(type(comm_dict))
28     commentSummary = comm_dict['comments']  # 得到包含评论的字典组成的列表
29     for comment in commentSummary:  # 遍历每个包含评论的字典,获得评论和打分
30         c_content = ''.join(comment['content'].split())  # 获得评论,由于有的评论有换行,这里用split()去空格,换行,并用join()连接起来形成一整段评论,便于存储
31         score = comment['score']  # 用户打分
32         # print(score)
33         # print(c_content)
34         commentList.append([score,c_content])
35     return commentList
36
37 '''获得多页评论'''
38 def conments(url,num):#url主体和爬取网页的数量
39     data = {'callback': 'fetchJSON_comment98vv6708',  # 调整页数page
40             'productId': '7437756',
41             'score': 0,
42             'sortType': 5,
43             'page': 0,
44             'pageSize': 10,
45             'isShadowSku': 0,
46             'rid': 0,
47             'fold': 1
48             }
49     comments=[]
50     for i in range(num+1):
51         try:#防止网页提取失败,使爬取终断,直接跳过失败页,继续爬取
52             data['page']=i
53             html = getHtml(url, data)
54             comment = getComment(html)
55         except:
56             continue
57         comments+=comment
58         print('页数',i)
59         time.sleep(3)#由于网站反爬虫,所以每爬一页停3秒
60         # if i/20==0:
61         #     time.sleep(5)
62     return comments
63
64 if __name__ =='__main__':
65     time_start = time.time()
66     url = 'https://sclub.jd.com/comment/productPageComments.action?'
67     comm=conments(url,500)
68     print('共计%d条评论'%(len(comm)))#打印出总共多少条评论
69     name=['score','comment']
70     file=pd.DataFrame(columns=name,data=comm)
71     file.to_csv('D:/machinelearning data/crawlerData/mi6x_JD500.csv',index=False)
72     time_end = time.time()
73     print('耗时%s秒' % (time_end - time_start))

转载于:https://www.cnblogs.com/zz22--/p/9320614.html

爬取京东网页评论(动态网页)相关推荐

  1. python爬取京东评论分析_Python爬取京东商品评价(动态网页的爬取)

    首先打开京东的任意几个商品页面,并观察URL,可以发现都是https://item.jd.com/+数字+.htm的格式,而且数字也随着商品的改变而改变,基本上可以确定这串数字是商品ID 之后我们找到 ...

  2. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  3. Python爬取京东商品评论

    京东商城的页面不是静态页面,其评论信息存放于json文件中,由ajax控制,所以我们在浏览器上看到的网页源代码和用Python爬下来的是不一样的,所以我们真正要爬取的是评论数据所存放的json文件. ...

  4. python爬取京东评论分析_【实战好文】|爬取京东书籍评论并分析

    原标题:[实战好文]|爬取京东书籍评论并分析 这是菜鸟学Python的粉丝第10篇原创投稿 阅读本文大概需要5分钟 本篇作者:小郑同学 上周的赠书活动中,收到了楼主送的<利用Python进行数据 ...

  5. 商品评论html,京东商品评论太多(带你一键爬取京东商品评论)

    京东商品评论太多(带你一键爬取京东商品评论) 一.项目说明 1.项目背景 一天,一朋友扔给我一个链接https://item.jd.com/100000499657.html,让我看看这个歌商品的所有 ...

  6. scrapy爬取京东商品评论并保存至Mysql数据库中

    scrapy爬取京东商品评论并保存至Mysql数据库 一.总体概述 二.实践过程 2.1网页解析 2.2使用单线程爬取代码如下: 2.3使用scrapy爬取数据 2.4绘制词云图结果: 三.总结 一. ...

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

    python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...

  8. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

  9. Python 爬取京东商品评论 + 词云展示

    利用python爬虫爬取京东商品评论数据,并绘制词云展示. 原文链接:https://yetingyun.blog.csdn.net/article/details/107943979 创作不易,未经 ...

  10. 用Python爬虫爬取澎湃新闻【动态网页:Ajax 动态请求、异步刷新生成数据】的搜索结果(附代码讲解与整套代码)

    一.准备工作 1.本段代码要用到Python中的selenium模块,需要提前进行加载.主要加载方式是在Python中的命令行中输入 pip install selenium. 注:当直接用 pip ...

最新文章

  1. python地图热力图是什么意思_python实现输入的数据在地图上生成热力图效果
  2. 用vc++如何得到汉字的Unicode编码?
  3. 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
  4. 卡方 python_Python评分卡建模—卡方分箱
  5. md5 算法java实现_java实现MD5算法
  6. Mysql无法创建外键的原因汇总_查看MySQL创建外键约束失败详细原因的方法
  7. oracle用户口令已失效
  8. 服务器的作用及用途,服务器的作用和用途是什么
  9. SWOT分析法 (SWOT Analysis)
  10. AD555计算机辅助设计,震旦Aurora AD555 驱动
  11. spoj COT COT2
  12. maven跳过Test打包
  13. 使用scrapy爬取北京公交
  14. 使用新版FLIR (FLIR_ADAS_v2) 训练Faster RCNN模型
  15. BZOJ1721 Ski Lift 缆车支柱
  16. VUE项目引入微信JSSDK 实现微信自定义分享
  17. 2020年前端安全综述-填坑记
  18. revit二次开发 材质相关
  19. 程序员:必备技能 Git
  20. 【文本文件单词数统计】统计《哈姆雷特》作品文本文件中除一些冠词、代词、连接词之外出现最多的单词,打印数量最多的前十个单词

热门文章

  1. Python 代码绘制航海王四皇大妈(BIG MOM) - 门卫大爷也能跟着学会的Turtle海龟绘图系列
  2. 打开和保存文件的对话框
  3. 量子计算机到底神在哪里说明文,“九章”量子计算机到底有多神!
  4. eclipse java shell 窗体显示 bat运行不显示_java eclipse中如何实现点击主窗口sShell中的按钮打开另外一个子窗口sShell...
  5. 申请服务器就是申请虚拟主机吗,申请一个虚拟主机和云主机哪个更好呢?
  6. alluxio源码解析-层次化存储(4)
  7. springboot情操陶冶-web配置(四)
  8. JAVA框架Struts2 Action类
  9. php.exe php-cgi.exe php-win.exe的区别
  10. 重拾IP路由选择:CCNA学习指南中的IP路由选择