Python爬虫示例爬取豆瓣影评生成词云

本文介绍了如何使用Python爬取豆瓣电影《小丑》的用户影评,将数据存储到MongoDB,然后利用jieba进行分词,最终生成词云。重点讲解了爬取过程、页面元素分析以及中文字体设置。
摘要由CSDN通过智能技术生成

一个简单的Python爬虫示例,本文讲解该怎么爬取网页信息,分析页面结构,将信息存入MongoDB(如果没有MongoDB也可以存txt里,并不影响整体程序运行),对影评使用jieba分词来构成词云(解决中文生成词云是空方格)。

使用到的包

import requests
#连接失败的异常
from requests.exceptions import ConnectionError
#MongoDB的包
import pymongo
from pymongo.mongo_client import MongoClient
#MongoDB连接失败的异常
from pymongo.errors import PyMongoError
#使用BeautifulSoup来处理页面
from bs4 import BeautifulSoup
#使用结巴分词
import jieba
#wordcloud词云包,STOPWORDS是默认的弃用词
from wordcloud import WordCloud, STOPWORDS
#将词云的图绘出
import matplotlib.pyplot as plt
import numpy as np
#导入图片用的包
from PIL import Image
#多线程用的包
import threading

下载包用到的命令

jieba包下载,一开始我用的是conda install -c conda-forge jieba但后面发现conda里的jieba包是小于0.4的。
jieba的github网址
在jieba里我看到有一个paddle模式,感觉很厉害就用pip把jieba升级了。如果也想用paddle模式就按图里的命令即可
在这里插入图片描述

#jieba下载,后面那个部分是使用清华源下载
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddlepaddle-tiny==1.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
#wordcloud下载
pip install wordcloud -i https://pypi.tuna.tsinghua.edu.cn/simple

其他包都比较常见,就不写了

程序主要由爬取和生成词云两个部分组成

1.爬取豆瓣影评

1.1先访问豆瓣电影看看能不能请求成功

打算爬取的是豆瓣电影里的小丑影评
在这里插入图片描述

def scrape(url):
    try:
        headers = {
   
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'
        }
        res = request.get(url, headers=headers)
        print(res.text)
    except ConnectionError:
        print("爬取失败")


if __name__ == '__main__':
    urls = [
        'https://movie.douban.com/subject/27119724/comments?start=0&limit=20&sort=new_score&status=P',
    ]
    for i in range(0, len(urls)):
        scrape(urls[i])
    createWordCloud()
    print('结束')

运行了下页面由出来,大致的看了下的确是小丑的短评
在这里插入图片描述

1.2分析页面,思考要把什么信息拿出来

在这里插入图片描述
我们将在MongoDB里存入用户名,用户做出的评价,短评的内容
易知用户名,评论都在class=comment-info里span里面
在这里插入图片描述
用户名是这个span里唯一的a标签,评论是class=rating里title代表的值
短评是class=short里的内容

1.3爬取相应的信息

# 连接MongoDb
def mongo():
    try:
        mongoClient = MongoClient('localhost', 27017)
        # 连接叫local的库
        mongoDatabase = mongoClient.local
        # 连接叫douban_two的集合
        collection = mongoDatabase.douban_two
        # 返回集合
        return collection
    except PyMongoError as e:
        print('出错', e)


# 爬取豆瓣短评
def scrape(url):
    try:
        # 请求头
        headers = {
   
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'
        }
        res = requests.get(url, headers=headers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值