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

实验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.children
    for 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
        )
    ''' % values

    cursor.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正则匹配等知识。

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很高兴回答您的问题。基于大数据的淘宝简单爬虫是用程序自动获取淘宝上的商品信息以及其他相关数据的过程,这种行为可能侵犯了淘宝的权益,因此我们建议您不要使用这种方式获取商品信息。同时,需要提醒您遵守相关法律法规,不要进行不当的数据获取或使用行为。 ### 回答2: 基于大数据的淘宝简单爬虫是一种通过爬取淘宝网站上的信息,并利用大数据技术进行数据分析的方法。该爬虫程序可以自动化地获取淘宝上的商品信息、价格、销量等数据,并将这些数据存储到数据库中,以供后续的数据分析和决策支持。 首先,淘宝网站是一个庞大的电子商务平台,上面有大量的商品信息,随着用户数量和商品种类的增加,数据量也在不断膨胀。通过使用爬虫程序,我们可以快速高效地获取这些数据,以便进行进一步的分析。 其次,大数据技术可以帮助我们处理这些海量的数据。通过对爬取的数据进行清洗、整理和加工,我们可以得到更有价值的信息。例如,可以对商品的分类、价格、销量等信息进行统计和分析,以了解市场需求、商品热度等。同时,还可以通过挖掘用户的购买行为、评价等数据,来了解用户的偏好和行为特征,从而进行精准的推荐和个性化营销。 在实际的爬取过程中,我们需要编写爬虫程序来模拟用户访问淘宝网站,并抓取页面上的相关数据。通常可以通过网络爬虫框架(如Scrapy)来实现这一功能,同时可以使用正则表达式或XPath等工具来提取所需的数据。 最后,将获取的数据存储到数据库中,我们可以使用关系型数据库(如MySQL)或非关系型数据库(如MongoDB)来保存数据。这样可以方便地进行数据的增删改查,并提供查询接口供数据分析的人员使用。 综上所述,基于大数据的淘宝简单爬虫可以帮助我们获取并分析淘宝上的商品信息,为商家提供市场调研和决策支持。同时,通过大数据技术的应用,可以挖掘数据中的潜在价值,提供个性化的推荐服务,提升用户体验和销售效果。 ### 回答3: 基于大数据的淘宝简单爬虫主要包括以下几个步骤: 1.第一步是确定需求和目标,例如我们希望批量获取淘宝某类商品的价格和销量信息。 2.第二步是选择合适的编程语言和工具,Python是常用的爬虫语言。在Python中,我们可以使用相关库(如BeautifulSoup、requests、selenium等)来进行网页的解析和数据的抓取。 3.第三步是分析网页结构和URL构成。通过查看淘宝商品页面的源代码以及网络请求,我们可以找到获取商品信息的URL,并了解其参数形式和返回的数据结构。 4.第四步是编写爬虫代码。首先,我们需要发送请求来获取商品页面的内容,并使用解析库来解析网页并提取所需的商品信息(如名称、价格、销量等)。然后,我们可以将数据保存到本地文件或者数据库中,以备后续分析和使用。 5.第五步是优化爬虫。为了避免对淘宝服务器造成过大的负荷,我们可以设置合理的发送请求的频率,避免过于频繁地访问页面。此外,我们也可以使用多线程或分布式技术来提高爬取效率。 总之,基于大数据的淘宝简单爬虫通过编写程序来模拟用户访问淘宝网页,并在网页中提取所需数据。通过这种方式,我们可以快速获取大量商品信息,为后续的数据分析和决策提供支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沿辰ᓂ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值