日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python豆瓣爬虫爬取评论做成词云

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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頁面的核心函數:

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

同一個電影把text放到一塊就可以。然后先存到數據庫。(多個節點的工程我更喜歡分布實現。這樣更穩定)

對于詞云生成部分:
我的文本信息數據庫(每一個text都很長很長)

完整核心代碼為:
douban

import requests from bs4 import BeautifulSoup import pymysql import time db = pymysql.connect(host="localhost", user="root",password="123456", db="project", port=3306) # 使用cursor()方法獲取操作游標 cur = db.cursor() 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'}url1="https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%8A%A8%E4%BD%9C&sort=time&page_limit=20&page_start=0" req=requests.get(url=url1) res=req.json() a=res['subjects'] def judmovie(url,name,imgurl,id):req=requests.get(url,headers=header)res=req.textsoup=BeautifulSoup(res,"lxml")timelong=soup.find(attrs={'property':'v:runtime'}).texttimelong=str(timelong).replace('分鐘','')introduction = soup.find(attrs={'property': 'v:summary'}).textintroduction = str(introduction).replace(' ', '')print(timelong,introduction)# sql="insert into movie(name,type,time_long,description,img)values('%s','action','%d','%s','%s')"%(name,int(timelong),introduction,imgurl)# try:# cur.execute(sql)# db.commit()# except Exception as e:# print(e)# db.rollback()# sql2="insert into ciyun(moviename,id)values('%s','%s')"%(name,id)# try:# cur.execute(sql2)# db.commit()# except Exception as e:# print(e)# db.rollback()for team in a:#print(team)id=team['id']img=team['cover']url=team['url']name=str(team['title']).replace(' ','')print(id,name,img,url)try:judmovie(url,name,img,id)time.sleep(1)except Exception as e:print(e)#judmovie("https://movie.douban.com/subject/30228425/?tag=%E6%81%90%E6%80%96&from=gaia",'fds','jj')

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豆瓣爬虫爬取评论做成词云的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。