数据可视网站源码分享,数据可视化网站模板

这篇文章给大家聊聊关于数据可视网站源码分享,以及数据可视化网站模板对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

用Python爬取中国医生电影评论生成词云并实现数据可视化(内附源码)

今日目标:爬取豆瓣电影中国医生评论实现数据可视化

前言

前段时间,主旋律电影《中国医生》上线,大家有没有去看呢?反正我去看了,有点感人(其实哭得稀里哗啦)。看完后,内心感概万分,回到家缓了好久。看了电影的海报画面,想着可以爬一爬大家对电影的评论,正好给大家写文了。于是,利用下班时间给大家做了这个爬虫项目。废话不多了,直接开整。

工具使用

开发环境

系统:Windows1064位

Python版本:Python3.7

IDE:Pycharm

第三方库:seleniumlxmlrewordcloudPILnumpyjiebamatplotlib

代码演示

饼图

饼图

词云生成

词云生成

柱状图生成

柱状图生成

项目思路分析

1获取网址规律

可以看到start和status是变化的关键

在这个页面可以通过xpath获取地址网页评论详情和评分

地址网页:

评论详情:

评分:

2打开地址网页,获取地址信息

有些没有地址信息所有需要获取全部后期通过数据处理获取有地址信息的

3把获取的数据进行解析分别存放三个文件

4通过读取相应的文件生成相应的图表

项目难点分析

1滑块验证

这个参考代码里面的滑块验证的方法

通过像素对比找到缺口

移动一段距离之后速度变化慢慢往前面走到达缺口就能够验证成功

2切换iframe

39;//*[@id=&34;]/div/div[2]&34;`该用户已经主动注销帐号`&34;href&39;./div/a/@href&34;detail&34;./div[2]/p/span//text()&34;rate&34;./div[2]/h3/span[2]/span[2]/@class&34;,\\n&graph图片对象\n\nword_cloud=WordCloud(font_path=&34;,\nbackground_color=&34;,\nmask=graph,34;json_file/rate.json&34;星&词云生成\nimportjieba\nimportnumpyasnp\nfromwordcloudimportWordCloud\nimportmatplotlib.pyplotasplt\nfromPILimportImage\ntext=open(&34;,encoding=&39;).read()\ntext=text.replace(&39;,&34;).replace(&34;,&34;)\ntext_cut=jieba.lcut(text)\ntext_cut=&39;.join(text_cut)\n34;image/mmexport1626868510673.jpg&34;simsun.ttc&34;white&指定词云的形状\n)\nword_cloud.generate(text_cut)\nplt.subplots(figsize=(12,8))\nplt.imshow(word_cloud)\nplt.axis(&34;)\nplt.show()

滑块验证

defslide(driver):\n&34;&34;&34;\n找到滑块\nblock=driver.find_element_by_xpath(&34;tcaptcha_drag_button&39;)\n39;//*[@id=&34;]&摁下滑块\nActionChains(driver).click_and_hold(block).perform()\n获取位移\ntracks=get_tracks(30)\n移动\nActionChains(driver).move_by_offset(track,0).perform()\n停一下\ntime.sleep(2)\n34;登录豆瓣&34;失败…再来一次…&单击刷新按钮刷新\nreload.click()\n打开文件获取清洗数据\nf=open(&39;,&39;,encoding=&34;)\nhello=f.read()\n按换行符进行\nforiinhello.split(&34;):\ntry:\n获取评论详细内容\ndetail=data.get(&34;)[0]\n34;(\\d{1})\\d&34;rate&获取地址\naddress=&34;.join(re.findall(&34;,&34;.join(data.get(&34;))))\n把评分添加到评分列表中\nrate_.append(rate)\n获取评分和地址的唯一\nrate_set=set(rate_)\naddress_set=set(address_)\n34;json_file/rate.json&39;w&34;utf-8&获取评分频次并且构造字典\nrate_json={r:rate_.count(r)}\nrate_json_list.append(rate_json)\nfile.write(json.dumps(rate_json_list,ensure_ascii=False))

写入地址json文件

34;json_file/address.json&39;w&34;utf-8&获取地址频次并且构造字典\naddress_json={a:address_.count(a)}\naddress_json_list.append(address_json)\nfile.write(json.dumps(address_json_list,ensure_ascii=False))

写入详情文件夹

34;json_file/detail.text&39;w&34;utf-8&34;&34;\\n&34;&通过xpath获取响应的板块\nemail_details=Html.xpath(&34;comments&39;)\nitems=[]\n地址页的地址评论内容评分呢\nitem={\n&34;:email_detail.xpath(&39;),\n&34;:email_detail.xpath(&34;),\n&34;:email_detail.xpath(&34;)\n}\nitems.append(item)

循环列表获取地址网址

如果网址为控则跳过\nifnotemail.get(&34;):\ncontinue\ndriver.get(email.get(&34;)[0])\n34;该用户已经主动注销帐号&34;href&隐士等待等待数据板块出现进行下一步\nwait.until(\nEC.presence_of_element_located((By.XPATH,&34;profile&39;))\n)\n34;address&39;//*[@id=&34;]/div/div[2]/div[1]/div//text()&整体数据写入初始文件中\nf.write(json.dumps(email,ensure_ascii=False)+&34;)

主程序

defmain(user,pwd):\n&34;&34;&34;\nf=open(&34;,&34;,encoding=&34;)\nf.write(&34;)\nurl=&34;\n34;driver_exe&34;chromedriver.exe&声明驱动\ndriver=webdriver.Chrome(executable_path=driver_file)\ndriver.get(url)\ndriver.find_element_by_xpath(&34;account&39;).click()\ndriver.find_element_by_xpath(&34;username&39;).send_keys(user)\ndriver.find_element_by_xpath(&34;password&39;).send_keys(pwd)\ndriver.find_element_by_xpath(&34;account&39;).click()\n滑动验证码\nslide(driver)\n\nprint(&34;)\ntype_mile=[&34;,&34;]\n\nfortype_intype_mile:\niftype_mile==&34;:\nindex_mile=480\nelse:\nindex_mile=180\nforiinrange(0,index_mile,20):\nurl=f&34;\nprint(url)\ndriver.get(url)\n34;]&所有数据获取完毕之后推出浏览器解析数据\n39;__main__&34;请输入你的账号:&34;请输入你的密码:”)\nmain(user,pwd)

仅供学习,爬虫使用需谨慎!

希望可以得到各位的一键三连,感谢各位支持!

祝大家学习python顺利!

如果有正在跟我一样的自学的朋友,需要我本篇的代码或者其他的Python学习资料可以转发此文私信我(私信发我“中国医生”

数据可视网站源码分享的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据可视化网站模板、数据可视网站源码分享的信息别忘了在本站进行查找哦。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平