实验7:设计一个网络爬虫的算法,动态获取全国新型冠状肺炎疫情。

实验8:提交一篇与实验作业7相对应的网络爬虫实验报告。

实验作业7+实验作业8下载链接
https://download.csdn.net/download/qq_37636795/18398399

(作业是博主认真做的,请多多支持!!!资源中有实验作业7和实验作业8,实验作业7提交epidemic.db,epidemic.py,全国疫情最新信息.xls三个文件;实验作业8单独提交实验报告即可)

南华大学
计算机科学与技术学院
实验报告

( 2020 ~2021 学年度 第二学期 )

课程名称 搜索引擎
实验名称 网络爬虫

姓名 学号

专业 软件工程 班级

地点 八教606 教师 肖建田

目录
一、实验目的 3
二、实验环境 3
三、实验材料 3
四、实验设计 3
五.结果和性能分析 3
六.有待解决的问题 3
七.实验总结 3

一、实验目的
了解网络爬虫的意义
掌握网络爬虫的基本方法

二、实验环境
Windows 10
Python 3.9
三、实验材料
Firefox 浏览器
Sqlite 数据库
pycharm开发工具
四、实验设计
1.数据库设计
create table epidemic
(
id integer – 主键id
primary key autoincrement,
title text, – 标题
newsUrl text, – 新闻主体url
publish_time text, – 发布时间
contents text – 新闻内容
);

2.程序代码
import re
import sqlite3

import xlwt
from bs4 import BeautifulSoup
from selenium import webdriver

browser = webdriver.Firefox()

定义正则

findnewUrl = re.compile(’<a href="(.?)".>’)
findTitle = re.compile(’<a.>(.?)’)
findPublishTime = re.compile(’(.*?)’)

def getContent(url):
“”"
获取新闻主体
:param url: url地址
:return:
“”"
browser.get(url)
# 获取页面资源
html = browser.page_source
# 解析页面,获取文档树
doc = BeautifulSoup(html, “lxml”)
contents_Ele = doc.select(“div#xw_box > p”)
contents = “”

for content_Ele in contents_Ele:childrens = content_Ele.childrenfor children in childrens:contents += str(children.string)return contents

def getData(baseUrl):
“”"
爬取网页数据
:param baseUrl:
:return:
“”"
tempUrl = baseUrl

for i in range(1, 3):if i != 1:baseUrl = tempUrl + "_" + str(i) + ".shtml"else:baseUrl = tempUrl + ".shtml"browser.get(baseUrl)# 获取页面资源html = browser.page_source# 解析页面,获取文档树print( "开始解析 " + baseUrl )bs = BeautifulSoup(html, "html.parser")print(bs)print("===================================================")dataList = []# 所有的新闻newsEle = bs.select("div[class='list']>ul>li")for newEle in newsEle:new_dict = []newEle = str(newEle)title = re.findall(findTitle, newEle)[0]new_dict.append(title)newUrl = re.findall(findnewUrl, newEle)[0]new_dict.append("http://www.nhc.gov.cn" + newUrl)publish_time = re.findall(findPublishTime, newEle)[0]new_dict.append(publish_time)# http://www.nhc.gov.cn/content = getContent("http://www.nhc.gov.cn" + newUrl)new_dict.append(content)print(new_dict)dataList.append(new_dict)return dataList

def init_db(dbPath):
“”"
创建数据库和表
:param dbPath:
:return:
“”"
sql = ‘’’
create table epidemic(
id integer primary key autoincrement,
title text ,
newsUrl text ,
publish_time text,
contents text
)
‘’’

conn = sqlite3.connect(dbPath)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()

def saveDataDB(dbPath, dataList):
“”"
保存数据到sqlite中
:param dbPath:
:param dataList:
:return:
“”"
init_db(dbPath)
conn = sqlite3.connect(dbPath)
cursor = conn.cursor()

for i in range(0, len(dataList)):data = dataList[i]for index in range(len(data)):data[index] = '"' + data[index] + '"'values = ",".join(data)sql = '''insert into epidemic(title,newsUrl,publish_time,contents)values(%s)''' % valuescursor.execute(sql)
conn.commit()
cursor.close()
conn.close()

def saveData(savePath, dataList):
“”"
保存数据到excel
:param savePath:
:param dataList:
:return:
“”"
workbook = xlwt.Workbook(encoding=“utf-8”)
sheet = workbook.add_sheet(‘最新疫情消息’, cell_overwrite_ok=True)

col = ['标题', '详情链接', '发布时间', '新闻内容']
for i in range(0, len(col)):sheet.write(0, i, col[i])
for i in range(0, len(dataList)):for j in range(0, len(col)):sheet.write(i, j, dataList[i][j])workbook.save(savePath)

def main():
baseUrl = “http://www.nhc.gov.cn/xcs/yqtb/list_gzbd”

# 1. 爬取网页
dataList = getData(baseUrl)
print("疫情数据爬取完毕!! ")# 3. 保存数据到excel
savePath = ".\\全国疫情最新信息.xls"  # 路径
saveData(savePath, dataList)print("成功保存到" + savePath + "中")# 4. 保存数据到数据库
dbPath = "epidemic.db"
saveDataDB(dbPath, dataList)print("成功保存到" + dbPath + "中")

if name == “main”: # 程序执行入口
main()
五.结果和性能分析
1. 控制台输出

  1. excel 表的内容

  2. sqlite 数据库数据

六.有待解决的问题
1. 在对网页数据的解析方面,不能非常熟悉的使用正则解析,导致某些数据存在冗余的字符,观感性不好。
2. 对于sqlite 的操作没有进行封装,导致了每一次执行代码就会执行一次数据库的初始化操作,故在每一次执行前都需要将数据库删除,否则会报错。
3. 在对某些网页进行爬取时,由于种种原因,无法得到正确的网页数据,导致了部分数据的丢失。
七.实验总结
爬虫是未来it 行业的一大趋势,爬虫的作用范围巨大,带开发的价值也很大。此实验是一个小型较简单的一个爬虫实验。其中也遇到了很多问题,例如数据丢失,解析出错等等。通过不断的查找资料以及爬虫相关的技术博客,最终基本上解决了上述问题。在爬取全国疫情信息的实验中,我学到了如何利用java语言和python语言进行爬取网页数据,也学会了python操作excel,sqlite操作以及re正则匹配等知识。

【大数据搜索引擎】网络爬虫南华实验报告(2021年版)相关推荐

  1. 中国工业大数据行业发展趋势分析与投资战略规划建议报告2022-2028年版

    中国工业大数据行业发展趋势分析与投资战略规划建议报告2022-2028年版 mmmmmm鸿**mmm晟&mmmmm信**mmmmm合&mmmmm研**mmmmmmm究&mmmm ...

  2. 大数据聚类算法性能比较及实验报告

    在大数据领域这个聚类算法真是起到了十分重要的作用,只有通过有效地聚类才能得到非常直观的结果. 有一个实验要求对比两种大数据聚类算法的性能,具体的代码也不是由我实现的,我只是改了一部分,主要还是博客大佬 ...

  3. 大数据搜索引擎技术_网络数据搜索技术

    大数据搜索引擎技术 Nowadays this is a very big problem to search appropriate data on web search engines. This ...

  4. 2018年全国中高等院校教师“Python编程、应用及华为大数据” 、“网络空间安全”、“区块链”培训班...

    关于举办2018年全国中高等院校教师"Python编程.应用及华为大数据" ."网络空间安全"."区块链"培训班通知 全国各中高等院校计算机 ...

  5. 刘鹏教授为江苏移动大数据和网络部门作报告

    2019年1月13日,江苏移动信息技术中心党总支开展主题党日活动,中国大数据应用联盟人工智能专家委员会主任.云创大数据总裁刘鹏教授受邀参加,并在江苏移动人工智能趋势及应用培训上作主题报告. 当天,刘鹏 ...

  6. python大数据搜索_【大数据搜索】JZSearch大数据搜索引擎

    大数据的特点有四个层面:第一,数据体量巨大.从TB级别,跃升到PB级别:第二,数据类型繁多.网络日志.视频.图片.地理位置信息等等.第三,价值密度低.以视频为例,连续不间断监控过程中,可能有用的数据仅 ...

  7. JZSearch大数据搜索引擎

    系统简介: 大数据的特点有四个层面:第一,数据体量巨大.从TB级别,跃升到PB级别:第二,数据类型繁多.网络日志.视频.图片.地理位置信息等等.第三,价值密度低.以视频为例,连续不间断监控过程中,可能 ...

  8. 《腾云:云计算和大数据时代网络技术揭秘》.pdf

    关注"Java后端技术全栈" 回复"面试"获取全套面试资料 什么是大数据? 最有名的回答莫过于"5V特点": 1)Volume:数据量大,包 ...

  9. 自动化测试工程师摸索之路---数据准备(网络爬虫)- 测试篇

    需求 验证爬取数据 自动化测试工程师摸索之路-数据准备(网络爬虫) 的准确性 测试方法 描述 为了更全面展示图片, 删除序号列, 所属项目列, 需求参考列, 案例类型列, 预期结果列, 备注列 模板: ...

  10. 用Python实现一个大数据搜索引擎

    用Python实现一个大数据搜索引擎 搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家 ...

最新文章

  1. 我对计算机的看法英语作文,我对网络的看法英语作文
  2. Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
  3. unity meta文件
  4. mockito_Mockito:无法实例化@InjectMocks字段:类型是接口
  5. error:Flash Download failed-“Cortex-M3”,“Programming Algorithm”【转】
  6. python序列类型-python学习—序列类型、列表、元组
  7. 2020-11-2(安卓入门(每个字皆为手打))
  8. OpenGL 笔记1 固定管线实例 + 双缓存测试实例
  9. 虚拟接口+tx+linux,Linux使用笔记: 解决Xen虚拟机中VLAN接口不能ping大包的问题
  10. 华硕服务器安装完系统起不来,w10安装后启动不起来的具体处理办法【图文】
  11. 你还认为中国没有桌面虚拟化核心技术?
  12. 基本排序看这篇就够了
  13. Atitit 文档全文索引的索引种类 用于文本数据挖掘 搜索 数据分析 目录 1.1. Txt摘要索引。。 1 1.2. File placeholder 索引 1 1.3. Lucence索引 1
  14. 1407 :上三角矩阵的判断(c语言)
  15. 服务器3D场景建模(五):体素场景(三)
  16. 导出数据提示--secure-file-priv选项问题的解决方法
  17. Electron修改窗口标题
  18. Excel2010中安装MegaStat插件 MegaStat for Excel2010(2007也适用)
  19. 海外市场交易执行策略的实践
  20. 海思Hi3136芯片怎么样?Hi3136处理器参数介绍

热门文章

  1. iOS硬解码H264视频流
  2. java 监听udp_Java实现Udp网络编程
  3. 【Espruino】NO.18 使用L298N驱动直流电机
  4. CSDN账号被盗了吗?
  5. 狂雨小说(KYXS)CMS 代码审计
  6. 保证速度与心情——pdg转pdf与djvu转pdf大法(不像网上的好多方法那样麻烦,方便快捷,纯傻瓜化操作!)
  7. 数据挖掘方面的论文指导(转)
  8. WINCC 7.4 SP1 7.5 博图v16 硬件学习补丁
  9. 【历史上的今天】8 月 24 日:Windows 95问世;乔布斯辞任苹果 CEO 库克上台
  10. 汇编语言程序设计 实验7 循环程序设计