Python爬虫---影评的爬取

Python爬虫—影评的爬取

介绍:爬虫练手,使用Requests库进行豆瓣影评的爬虫,做成词云图,写文章主要做一些问题解决的记录。

运行环境:python 3.8, Pycharm

关于在豆瓣爬取影评内容,就不太多叙述,推荐看一个B站up的视频,简单易懂

视频链接

项目准备

1.安装Python生成词云的常用库[wordcloud]

pip install wordcloud

安装失败请看后面的解决方法

基本使用介绍

wordcloud默认是为了英文文本来做词云的,如果需要制作中文文本词云,就需要先用**[jieba]**对文本进行分词

2.安装中文分词库[jieba]

pip install jieba

3.安装爬虫库[requests]

pip install requests 或 在Pycharm里面安装

另外还需要安装bs4等库

项目代码

因为内容较为简单,且有注释,不做太多解释。

RD_request.py 爬取内容,写入到一个txt文件内

import requests
import time
import random
from bs4 import BeautifulSoup

#请求数据
# UA
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}

# 通过观察的url翻页的规律,使用for循环得到10个链接,保存到urls列表中
urls = ['https://movie.douban.com/subject/34841067/comments?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0, 200, 20)]

comments_list = []
for url in urls:
    # 发送请求
    r = requests.get(url=url, headers=headers).text
    # 处理
    res = BeautifulSoup(r, 'html.parser')
    ul = res.find('div', id="comments")
    p_list = ul.find_all('p')

    list2 = []
    for li in p_list:
        list2.append(li.find('span').string)

    comments_list.extend(list2)
    time.sleep(random.randint(0, 3))  # 暂停0~3秒,有的网站会限制用户访问频率,所以进行模拟

# 注意指定文件的编码格式为UTF-8
with open("lhy.txt", "a+", encoding='utf-8') as f:
    for i in comments_list:
        f.write(i+"\n")

将会获得一个lhy.txt文件

在这里插入图片描述

RD_wordcloud 读取txt文件内的内容,生产词云图

from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba


#处理文本,并制作词云图
# 打开文本
with open("lhy.txt",encoding="utf-8") as f:
    s = f.read()

# 中文分词
text = ' '.join(jieba.cut(s))

# 生成对象
img = Image.open("001.png") # 打开蒙版图片
mask = np.array(img) #将图片转换为数组

stopwords = ["我", "你", "她", "的", "是", "了", "在", "也", "和", "就", "都", "这"]
wc = WordCloud(font_path="msyh.ttc",
               mask=mask,
               width=000,
               height=700,
               background_color='white',
               max_words=200,
               stopwords=stopwords).generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')# 用plt显示图片
plt.axis("off")  # 不显示坐标轴
plt.show()  # 显示图片
# 保存到文件
wc.to_file("lhy01.png")

蒙版图片使用白底有图案图片,有图案的地方会被词云替代

在这里插入图片描述

生成的词云图:

在这里插入图片描述

遇到的问题及解决方法

1.安装wordcloud库遇到问题

解决方法:

下载地址

下载对应于你安装的python版本的wordcloud-x.x.x-cpxx-cpxxm-win32.whl文件(如:python3.8对应的是wordcloud-1.8.1-cp38-cp38-win_amd64.whl)

在这里插入图片描述

放在你安装python的目录下(或项目目录下)后进行安装pip install wordcloud-1.8.1-cp38-cp38-win_amd64.whl,接下来就可以直接安装wordcloud了

在这里插入图片描述

使用 pip list 进行查看

在这里插入图片描述

安装完成!!!

2.安装其他第三方库遇到问题

2.1 尝试换国内镜像

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

*例如:pip install -i https://pypi.doubanio.com/simple/ 包名*

2.2 尝试本地安装(下载whl文件方式):参考 worldcloud 安装的解决

2.3 在PyCharm里面装

在这里插入图片描述

!!! 如果尝试了以上三种方式还出错 !!!

且报错为[WinError 10061 ] “由于目标计算机积极拒绝。。。。”

请查看电脑 设置—系统代理设置—关闭系统代理

(曾经卡了我一个下午)

3.bs4.FeatureNotFound:找不到具有您请求的功能的树生成器:lxml。您需要安装解析器库吗?

在这里插入图片描述

使用内置python html解析器,不安装不依赖项

soup = BeautifulSoup(s, "html.parser")
4.文件编码格式问题

在这里插入图片描述

解决的办法就是,改变目标文件的编码:with open(“lhy.txt”, “a+”, encoding=‘utf-8’) as …

5.ImportError: DLL load failed while importing mtrand: 找不到指定的程序

因为使用的是python 3.9,所以对应的matplotlib 需要更新

pip install matplotlib==3.2.1

另一个解决方法将python 降版本到3.8。

爬虫注意事项

查看豆瓣的robots协议:
douban_robots
在这里插入图片描述

解读:

robots.txt文件中各项目的格式为: :
常用的field有Allow, Disallow, Request-rate, Visit-time, User-agent, Robot-version等.robots.txt文件中的注释以’#'开始.可以为独立的一行,也可以一行的后面部分.下面对每一个field,也叫directive进行一一介绍:

  1. User-agent: 该字段的值是记录描述其访问策略的机器人的名称。
    例子:User-agent: *
    在这里*代表,与任何其他记录不匹配的任何机器人

  2. Disallow: 指定不能访问我URL
    例子: Disallow: /foo.html #foo.html不能访问
    Disallow: #该目录下所有URL都可访问
    Disallow: / #该目录下所有URL都不可以访问

  3. Allow: 用来指定能访问的URL, 这个在当指定所有URL为不可访问,然后可以用这个排除特殊的一些URL. 这时候比较方便.
    例子: Allow: / #允许访问所有URL

小建议
1.爬虫访问频次要控制
2.涉及到个人隐私的信息不能爬
3.突破网站的反爬措施,后果很严重
4.不要用爬取的数据做不正当竞争
5.付费内容,不要爬
6.突破网站反爬措施的代码,最好不要上传到网上

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值