python豆瓣爬虫爬取评论做成词云
生活随笔
收集整理的這篇文章主要介紹了
python豆瓣爬虫爬取评论做成词云
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
前一段時間學校有個project,做一個電影購票系統,當時就用springboot做了系統,用python抓了一些電影的基本信息。后來發現如果把評論做成詞云那展示起來不是很酷炫么。于是乎把這個過程分享記錄下來。
- 雖然不是什么高大上的技術,但是是自己做出來的詞云,難免有些興奮。
- 所用到的庫:
- 爬蟲:requests,pymysql存庫。
- 詞云生成:wordcloud(詞云),jieba(中文文本分詞)。matplotlib(圖片展示)
數據庫
ciyun
SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for ciyun -- ---------------------------- DROP TABLE IF EXISTS `ciyun`; CREATE TABLE `ciyun` (`moviename` varchar(255) DEFAULT NULL,`id` int(11) DEFAULT NULL,`text` varchar(8000) CHARACTER SET utf8mb4 DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;movie
SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for movie -- ---------------------------- DROP TABLE IF EXISTS `movie`; CREATE TABLE `movie` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`type` varchar(255) DEFAULT NULL,`time_long` int(20) DEFAULT NULL,`description` varchar(1500) DEFAULT NULL,`img` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8mb4;爬蟲部分:
一個爬蟲重在分析網頁鏈接的關系和結構。我要爬取的是短評。
進入豆瓣電影選恐怖的界面分析每個電影下的屬性:
- 并且他的下拉還會有ajax返回數據(沒有加密)
找到這個界面進去鏈接你會發現:
他的url是由規律的。進去你在看評論
在觀看評論時候:
你會發現這個評論都在short類中,那么這樣你就可以抓到夠多的評論了。對于爬蟲部分因為評論只是要抓取的一部分,那么就不具體介紹了。給出解析text頁面的核心函數:
同一個電影把text放到一塊就可以。然后先存到數據庫。(多個節點的工程我更喜歡分布實現。這樣更穩定)
對于詞云生成部分:
我的文本信息數據庫(每一個text都很長很長)
完整核心代碼為:
douban
gettext:
import requests from bs4 import BeautifulSoup import time import pymysql header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}db = pymysql.connect(host="localhost", user="root",password="123456", db="project", port=3306) # 使用cursor()方法獲取操作游標 cur = db.cursor() def gettext(url):req=requests.get(url)res=req.textsoup=BeautifulSoup(res,'lxml')commit=soup.select(".short")text=''for team in commit:text+=team.text+' 'return text sql="select * from ciyun" cur.execute(sql) valuelist=cur.fetchall() for value in valuelist:time.sleep(0.4)try:name=value[0]id=value[2]url1="https://movie.douban.com/subject/"+str(id)+"/comments?start=0&limit=20&sort=new_score&status=P"url2 = "https://movie.douban.com/subject/" + str(id) + "/comments?start=20&limit=20&sort=new_score&status=P"tex1=gettext(url1)tex2=gettext(url2)tex1+=tex2print(1,tex1)sql ="update ciyun set text='%s' where id='%s'"%(tex1,id)cur.execute(sql)db.commit()except Exception as e:print(e) gettext("https://movie.douban.com/subject/30228425/comments?status=P")詞云效果為:
插入到網頁中:
項目github地址
- 如果對后端、爬蟲、數據結構算法等感性趣歡迎關注我的個人公眾號交流:bigsai
總結
以上是生活随笔為你收集整理的python豆瓣爬虫爬取评论做成词云的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 表名和和数据库函数名称冲突的
- 下一篇: matplotlib关于坐标轴数据显示的