接上一章,动态页面抓取——抓取京东评论区内容。
url=‘/comment/productPageComments.action?callback=fetchJSON_comment98vv399&productId=4560435&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1’
重点是productId——产品id、page——页码、pageSize:指定每一页展示多少评论
#coding:utf-8
importrequestsimportjson,timedefget_detail(url):
wbdata=requests.get(url).text
wbdata= wbdata[25:-2]
data=json.loads(wbdata)
news= data['comments']for n innews:
title= n['content']printtitleprint '-'*20
for i in range(30):
url= '/comment/productPageComments.action?callback=fetchJSON_comment98vv399&productId=4560435&score=0&sortType=5&page=' +str(i) +'&pageSize=10&isShadowSku=0&fold=1'
#url = '/comment/productPageComments.action?callback=fetchJSON_comment98vv399&productId=4560435&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
if requests.get(url).status_code == 200:
get_detail(url)
time.sleep(10)print i
代码类似,不详细说明(get、json、数据处理)。
加入time.sleep(10)防止ip被禁。
结果如下:
----------------------------------------------------------
想比较直观的显示评论重点,因此加入jieba分词还有wordcloud词云(没有库的,通过pip install jieba)
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba,os
import jieba.analyse
text_from_file_with_apath = open('sss.txt').read()
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
wl_space_split = " ".join(wordlist_after_jieba)
print wl_space_split
tags = jieba.analyse.extract_tags(text_from_file_with_apath, topK=30)
print tags
s = " ".join(tags)
my_wordcloud = WordCloud().generate(s)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
简陋版词云效果。
wordcloud 默认使用了DroidSansMono.ttf 字体库,改一下换成一个支持中文的ttf 字库, 重新运行一下这十行代码,就可以了。
wordcloud词云默认不支持中文,可能会显示还多矩形框。
解决办法——改一下换成一个支持中文的ttf 字库
Python27\Lib\site-packages\wordcloud.py中的 ---- DroidSansMono.ttf 替换修改为 simfang.ttf
-----------------------------------
在线词云生成网页:/create
------------------------------------
参考文章:/dylanzr/article/details/60868969
/87496/?repeat=w3tc