python实验16_网络爬虫

实验16:网络爬虫

1.实验目标及要求

(1)掌握简单爬虫方法。

2. 实验主要内容

爬取中国票房网

① 爬取中国票房网(www.cbooo.cn)2019年票房排行榜前20名的电影相关数据
代码部分:

import time
from selenium.webdriver import Edge
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectweb=Edge()
web.get("https://www.endata.com.cn/BoxOffice/BO/Year/index.html")
# 定位下拉列表
sel_el=web.find_element(By.XPATH,'//*[@id="OptionDate"]')
sel=Select(sel_el)
sel.select_by_value("2019")
time.sleep(2)
# 输出标头信息
thead=web.find_element(By.XPATH,'//*[@id="TableList"]/table/thead/tr')
print(thead.text)
# 查询前二十个电影
for i in range(1,21):tr=web.find_element(By.XPATH,'//*[@id="TableList"]/table/tbody/tr['+str(i)+
']')print(tr.text.replace('\n',' '))
web.close()

输出结果:

  影片名称 类型 总票房() 平均票价 场均人次 国家及地区 上映日期
1 哪吒之魔童降世 动画 500,359 36 24 中国 2019-07-26
2 流浪地球 科幻 468,150 45 29 中国 2019-02-05
3 复仇者联盟4:终局之战 动作 424,922 49 23 美国 2019-04-24
4 我和我的祖国 剧情 312,366 39 36 中国/中国香港 2019-09-30
5 中国机长 剧情 290,354 38 27 中国 2019-09-30
6 疯狂的外星人 喜剧 221,275 42 30 中国 2019-02-05
7 飞驰人生 喜剧 172,733 42 25 中国 2019-02-05
8 烈火英雄 灾难 170,339 36 19 中国 2019-08-01
9 少年的你 剧情 155,623 36 16 中国 2019-10-25
10 速度与激情:特别行动 动作 143,430 36 15 美国 2019-08-23
11 蜘蛛侠:英雄远征 动作 141,751 36 17 美国 2019-06-28
12 扫毒2:天地对决 剧情 131,143 36 17 中国/中国香港 2019-07-05
13 大黄蜂 动作 114,956 36 11 美国 2019-01-04
14 攀登者 剧情 109,501 37 22 中国 2019-09-30
15 惊奇队长 动作 103,518 37 14 美国 2019-03-08
16 比悲伤更悲伤的故事 爱情 95,792 31 15 中国台湾 2019-03-14
17 哥斯拉2:怪兽之王 科幻 93,737 37 15 美国 2019-05-31
18 阿丽塔:战斗天使 动作 89,698 38 14 美国/加拿大/阿根廷 2019-02-22
19 银河补习班 剧情 87,772 34 16 中国 2019-07-18
20 误杀 剧情 83,173 34 15 中国 2019-12-13

综合爬虫统计数据

② 请编程实现如下操作:从网址http://www.kanunu8.com/book3/6879/上爬取小说《动物农场》的所有章节;分析小说《动物农场》,按词频输出三个字的词汇前 10 项;根据词频画出这10个词汇的直方图,并另存为文件“动物农场词频.png”。
代码部分:爬虫部分

import time
from selenium.webdriver import Edge
from selenium.webdriver.common.by import Byweb=Edge()
web.get("https://www.kanunu8.com/book3/6879/131779.html")
text=open('动物农场.txt', 'a', encoding='gbk')
# 循环十章
for _ in range(10):# 定位到文章内容p=web.find_element(By.XPATH,'/html/body/div/table[5]/tbody/tr/td[2]/p')text.write(p.text.replace('\n',''))time.sleep(2)# 点击下一页click=web.find_element(By.XPATH,'/html/body/div/table[7]/tbody/tr/td/table/
tbody/tr/td[3]/strong/a').click()time.sleep(20)
输出结果:代码部分:词频分析部分
import jieba
import matplotlib.pyplot as plts=open('动物农场.txt', 'r', encoding='utf-8',errors='ignore').read()
jieba.load_userdict('动物农场.txt')
words=jieba.lcut(s)   # 进行分词操作stopwords_list=[]     # 创建中文停用词列表
with open('./作业十二/stopword.txt','r',encoding='utf-8') as f:for line in f:line = line[:-1]stopwords_list.append(line)words_dict={}
for word in words:# 长度大于1和不在停用词中的词 保存到字典并记录词频if word not in stopwords_list and len(word)!=1:words_dict[word]=words_dict.get(word,0)+1
words_list=list(words_dict.items())
words_list.sort(key=lambda x:x[1],reverse=True)  #按词频大小排序
# 分别记录三个字词和词频
three_words=[]
three_words_num=[]
num=0
for three_word in words_list:if len(three_word[0])==3 and num<10 and three_word[0]!='实际上' and three_word[0]!='第一次':three_words.append(three_word[0])three_words_num.append(three_word[1])num+=1# 画图
plt.bar(three_words,three_words_num)
# 写上高度
for i in range(len(three_words)):plt.text(three_words[i],three_words_num[i],three_words_num[i],va="bottom",
ha="center")
plt.rcParams['font.sans-serif'] =['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.savefig('动物农场词频.png')
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成为CSS选择器大师,让你的网页瞬间提升品味!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、选…

【tg】9 : InstanceImpl 、 虚拟的音频渲染设备FakeAudioDeviceModuleImpl

代码分布 WebRTC-Manager 线程:manager线程 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\InstanceImpl.h Manager 使用的是 WebRTC-Manager 线程 InstanceImpl 对Manager 的封装和调用 #

pycharm转移缓存目录

原来的缓存目录为C:\Users\86176\AppData\Local\JetBrains&#xff0c;各种配置文件、缓存文件随着pycharm的使用堆积在这里&#xff0c;导致C盘逐渐爆满。 因此需要将缓存目录转移至D盘。首先需要了解缓存目录的知识。 PyCharm 和其他 JetBrains 的 IDE 通常会有两个关键的目…

Nodejs和Node-red的关系

NPM相关知识 npm概念 npm&#xff1a;Node Package Manager&#xff0c;Node包管理器。是Node.js默认的&#xff0c;以JavaScript编写的软件包管理系统。 npm工作原理 npm的操作原理是各个官网使用npm publish把代码提交到npm的服务器&#xff0c;其他人想要使用这些代码&am…

适用于 Linux 和 Unix 的特权访问管理

凭据、SSH 密钥、服务帐户、数字签名、文件系统等内容构成了Linux 环境的关键部分&#xff0c;虽然大多数PAM供应商为基于Windows的环境提供无缝的特权访问管理&#xff0c;但它们的通用性不足以为Linux&#xff0c;Unix和*nix环境扩展相同的功能和功能。 Linux 中的root权限是…

微信小程序获取用户信息

个人博客 微信小程序获取用户信息 个人微信公众号&#xff0c;求关注&#xff0c;求收藏&#xff0c;求指错。 文章概叙 本文主要讲的是小程序获取用户信息的&#xff0c;更新测试时间是2023-10-25 更改原因 首先&#xff0c;官网上的解释是这样的&#xff0c;为了安全合…

PAM从入门到精通(二十六)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;二十五&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 七、PAM-API各函数源码详解 前边的文章讲解了各PAM-API…

【AI视野·今日Robot 机器人论文速览 第五十七期】Wed, 18 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 18 Oct 2023 Totally 17 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Underwater and Surface Aquatic Locomotion of Soft Biomimetic Robot Based on Bending Rolled Dielectric Elastomer Actua…

No module named ‘cv2’ 解决方法

目录 解决方案1解决方案2 解决方案1 一般情况下的解决方案 在自己的虚拟环境里面安装就行 pip install opencv-python解决方案2 但是我遇到的情况没有这么简单,我使用了pip list | grep open 搜索含有open字样的opencv的包,结果显示已经安装了 我直接进入我的自定义的虚拟…

亚马逊注册账号时老是显示内部错误

最近你们是否遇到注册亚马逊账号时一直遇到"内部错误"的情况&#xff1f;&#xff0c;这可能是由多种原因引起的。以下是一些可能有助于解决这个问题的步骤&#xff1a; 1、清除缓存和Cookie&#xff1a;有时浏览器缓存和Cookie中的问题可能导致网站错误。可以试试清…

如何在Ubuntu下安装RabbitMQ服务并异地远程访问?

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

WeakHashMap 源码解析

目录 一. 前言 二. 源码解析 2.1. 类结构 2.2. 成员变量 2.3. 构造方法 2.4. Entry 2.5. 添加元素 2.6. 扩容 2.7. 删除元素 2.8. 获取元素 一. 前言 WeakHashMap&#xff0c;从名字可以看出它是某种 Map。它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除…

新手投资如何分配股票仓位?诺奖得主的秘诀是什么?| 附代码【邢不行】

2023年6月22日&#xff0c;诺贝尔经济学奖得主哈里.马克维茨于美国去世&#xff0c;享年95岁。 作为现代金融先驱者&#xff0c;马科维茨不仅是将数学引入金融的第一人&#xff0c;更用数学解释了分散投资的重要性。 更令人惊叹的是&#xff0c;过去十几年中如果按他的理论在中…

docker部署prometheus+grafana服务器监控(一)

docker-compose 部署prometheusgrafana Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库&#xff0c;基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据&#xff0c;通过服务发现或静态配置去获取要采集的目标服务器&#xff0c;支持多节点工…

18.2 使用NPCAP库抓取数据包

NPCAP 库是一种用于在Windows平台上进行网络数据包捕获和分析的库。它是WinPcap库的一个分支&#xff0c;由Nmap开发团队开发&#xff0c;并在Nmap软件中使用。与WinPcap一样&#xff0c;NPCAP库提供了一些API&#xff0c;使开发人员可以轻松地在其应用程序中捕获和处理网络数据…

【Redis系列】在Centos7上安装Redis5.0保姆级教程!

哈喽&#xff0c; 大家好&#xff0c;我是小浪。那么最近也是在忙秋招&#xff0c;很长一段时间没有更新文章啦&#xff0c;最近呢也是秋招闲下来&#xff0c;当然秋招结果也不是很理想&#xff0c;嗯……这里就不多说啦&#xff0c;回归正题&#xff0c;从今天开始我们就开始正…

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)

这是继之前文章&#xff1a; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;二&…

配置Sentinel 控制台

1.遇到的问题 服务网关 | RuoYi 最近调试若依的微服务版本需要用到Sentinel这个组件&#xff0c;若依内部继承了这个组件连上即用。 Sentinel是阿里巴巴开源的限流器熔断器&#xff0c;并且带有可视化操作界面。 在日常开发中&#xff0c;限流功能时常被使用&#xff0c;用…

uni-app配置微信开发者工具

一、配置微信开发者工具路径 工具->设置->运行配置->小程序运行配置->微信开发者工具路径 二、微信开发者工具开启服务端口

YB5302是一款工作于2.7V到6.5V的PFM升压型双节锂电池充电控制集成电路

YB5302 锂电输入升压型双节锂电池充电芯片 概述: YB5302是一款工作于2.7V到6.5V的PFM升压型双节锂电池充电控制集成电路。YB5302采用恒流和准恒压模式(Quasi-CVT™)对电池进行充电管理&#xff0c;内部集成有基准电压源&#xff0c;电感电流检测单元&#xff0c;电池电压检测电…