寒假作业最后大礼包|作业1

博客班级 https://edu.cnblogs.com/campus/fzzcxy/Freshman
作业要求 https://edu.cnblogs.com/campus/fzzcxy/Freshman/homework/11734
作业目标 题目一:词云图 题目三 实时采集
作业源代码 https://github.com/byyanxia/WinterVacationHomework
学号

0X00前言

点击打开👉#实时票房爬取+微信推送
由于本人比较菜,这次作业我就挑选了豆瓣网站作为采集对象(嘿嘿,没有反爬虫技术,就是爽。猫眼想爬实时票房有点难搞,其他数据还可。有空就爬一爬)
emmmm,由于以后不走程序员的道路。github方面就会不像他们那样用的那么细了...
我在这篇随笔中我说一下我写这个程序的思路吧(QAQ

注:本次所爬电影:唐人街探案3

0X01正文

该爬虫程序所须库有
requests,lxml,time

首先我们查看一下网页的源代码(右键查看,并保存到本地)


在这里,我们可以发现,每条评论的格式都为

<p class=" comment-content">           
                <span class="short">所爬的内容</span>
          </p>

所以说接下来我们用lxml的xpath来爬取,我是这么定位的:
tiqu=soup.xpath('//p[@class=" comment-content"]/span[@class="short"]/text()')
这就是第一阶段,我用来初步调试能否正常爬取。
以下附上第一阶段的代码截图

okk,已经正常爬取评论了。

然后我们进入下一阶段,开始爬取所有的连接。

首先我们先打开豆瓣网站

点击下一页的时候连接变为

https://movie.douban.com/subject/27619748/comments?start=20&limit=20&status=P&sort=new_score

我们可以发现多了一个start参数。所以说,我们可以通过修改start参数来进行页数的切换。
经过查询目前最多到200为止。
for page in range(0,220,20):
接下来我们需要把爬取的数据保存到一个文本里

with open(r'trj1.txt', 'a+',encoding='UTF-8') as f:
   f.write(tiqu + '\n')
   f.close()

噢,一定要记得加点延迟访问。否则可能会被网站拦截!!!而且降低访问速度,对对方网站的资源占用也不会太高。最后就如下图所示。

如果想要方便调用的话,我们还可以利用def函数来封装。如图

接下来就到了生成词云了。

(这里我直接用了系主任给的博客文章进行微调)。
不知道为什么,我文本格式是utf-8可,返回信息却是gbk.

不过问题不大,只需要对这个地方调整即可

然后通过调整以下代码来令图片更好看

wc = WordCloud(
             background_color="white",  # 背景颜色
             max_words=500,  # 显示最大词数
             font_path="C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simsun_31bf3856ad364e35_10.0.18362.1_none_cd668f05ece74044\simsun.ttc",  # 使用字体,每个人的文件路径可能不同
             min_font_size=10,
             max_font_size=60,
             width=400,
             height=860,
             mask=color_mask) # 图幅宽度

附上成品图

0X02文末

正好前几天有学xpath定位,所以很快就能搞定这个作业了。(⑉・̆-・̆⑉)
有空的话再试试其他作业。

参考资料

python爬虫利器三之Xpath语法与lxml库的用法
中文常用停词
python词云实现

posted @ 2021-02-21 16:13  YanXia丶  阅读(155)  评论(2编辑  收藏  举报
<