百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

利用Python语言功能对网站电影短评的爬取:网络爬虫

bigegpt 2024-09-10 11:16 4 浏览

在上一篇文章里介绍了利用find_all的方法来对网络上电影的排名,今天我们介绍一个利用select函数的方法。

方法二:利用select函数

#x1=soup.find_all("li")

x1 = soup.select("ol li") #子目录标签,各级标签之间利用空格进行分割

1.5影片短评的爬取

#循环获得短影评,电影编号 32659890

import requests as rt
from bs4 import BeautifulSoup as bs
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
#循环获得短影评


k=range(0,1200,20)
my_txt=""
for
i in k:
#my_url=my_list1[0]+r"comments?start="+str(i)+r"&limit=20&sort=new_score&status=P"
my_url =r"https://movie.douban.com/subject/32659890/"\ #电影编号32659890


+ r"comments?start=" + str(i) \
+ r"&limit=20&sort=new_score&status=P"
#print(my_url)
my_data=rt.get(my_url, headers=headers, timeout=30)
my_data.encoding="utf-8" #解决中文乱码问题


soup=bs(my_data.text,"html.parser")
#print(soup)
x1=soup.find_all("span",class_="short")
for i in x1:
#print(i.text)
my_txt=my_txt+i.text
#词频统计


import jieba
x3=jieba.lcut(my_txt)#分词后的文章


x4=dict()
#屏蔽词


y1=["\r\n","一部"]
for i in x3:
if i not in y1 and len(i) > 1:
x4[i]=x4.get(i,1)+1
#排序


res = sorted(x4.items(),key=lambda d:d[1],reverse=True)
#print(type(res),len(res))
for i in range(0,10):#词频的前10名


print(res[i])
#词云


from wordcloud import WordCloud
#图形


import cv2 #pip install opencv-python
mask =cv2.imread("000.jpg") #读取背景图片



my_txt2=" ".join(x3)
excludes=["\r\n","一部","电影","片子","没有","这部","一个"]
wordcloud = WordCloud(background_color="white",
width=800,
height=600,
font_path="msyh.ttc",
max_words=200,
max_font_size=200,
stopwords = excludes,
mask=mask
).generate(my_txt2)
wordcloud.to_file('111.jpg')
#显示图片


from PIL import Image
img=Image.open('111.jpg')
img.show()


1.6 爬取时光网排名

import requests

from bs4 import BeautifulSoup as bs

x2=range(1,11)

for my_n in x2:

??? if my_n==1:

??????? my_url=r"http://www.mtime.com/top/movie/top100/"

??? else:

??????? my_url=r"http://www.mtime.com/top/movie/top100/index-"+str(my_n)+r".html"

??? print(my_url)

??? my_data=requests.get(my_url)

??? my_data.encoding="utf-8" #解决中文乱码问题
??? soup=bs(my_data.text,"html.parser")

??? x1=soup.find_all('li')

??? for i in x1:

??????? if i.find("div",class_="number")!=None:

??????????? print(i.find("em").text,end=" ")

??????????? try:

??????????????? print(i.find("a",class_="c_fff").text,end=" ")

??????????? except:

??????????????? print(i.find("a",class_="c_blue").text,end=" ")

??????????? print(i.find("span",class_="total").text,end="")

??????????? print(i.find("span", class_="total2").text)





相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...