Python爬虫教程篇+图形化整理数据(数学建模可用)

这篇具有很好参考价值的文章主要介绍了Python爬虫教程篇+图形化整理数据(数学建模可用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、首先我们先看要求

1.写一个爬虫程序

2、爬取目标网站数据,关键项不能少于5项。

3、存储数据到数据库,可以进行增删改查操作。

4、扩展:将库中数据进行可视化展示。

二、操作步骤:

首先我们根据要求找到一个适合自己的网站,我找的网站如下所示:

电影 / 精品电影_电影天堂-迅雷电影下载 (dygod.net)

1、根据要求我们导入爬取网页所需要的板块:

import requests   #扒取页面
import re         #正则
import xlwt       #Excel库用于读取和写入
from bs4 import BeautifulSoup    #从网页提取信息

2、设置url为我们所需要爬的网站,并为其增加ua报头

url = "https://www.dygod.net/html/gndy/dyzz/"
# url1 = "https://movie.douban.com/top250?start=0&filter="

hd = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188'
}

3.我们记录爬取的电影,以及创建自己的工作表

count = 0 #记录爬取的电影数量
total = []
workbook = xlwt.Workbook(encoding="utf-8")  #创建workbook对象
worksheet = workbook.add_sheet('sheet1')    #创建工作表

4.我们基于网站上的数据通过F12进入调试模式,找寻自己需要爬取的数据,进行封装和继承,最终保存在movie.xls表格中导进去

def saveExcel(worksheet, count, lst):
    for i, value in enumerate(lst):
        worksheet.write(count, i, value)



for i in range(2, 10):  # 爬取电影的页面数量,范围从第2页到第10页(包含第10页)
    url = "https://www.dygod.net/html/gndy/dyzz/index_"+str(i)+".html"
    # print(url)
    res = requests.get(url,headers=hd)
    res.encoding = res.apparent_encoding
    # print(res.text)

    soup = BeautifulSoup(res.text,"html.parser")
    # print(soup.title,type(soup.title))

    ret = soup.find_all(class_="tbspan",style="margin-top:6px")    #找到所有电影的表格

    for x in ret:     #遍历每一个电影表格
        info = []
        print(x.find("a").string)  #电影名称
        info.append(x.find("a").string)

        pat = re.compile(r"◎译  名(.*)\n")
        ret_translated_name = re.findall(pat, str(x))
        for n in ret_translated_name:
            n = n.replace(u'/u3000', u'')
            print("◎译  名:", n)
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎年  代(.*)\n")
        ret_year = re.findall(pat, str(x))
        for n in ret_year:
            n = n.replace(u'/u3000', u'')
            print("◎年  代:", n)
            info.append(str(n))

        pat = re.compile(r"◎产  地(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎产  地:", n)
            info.append(str(n))
        pat = re.compile(r"◎类  别(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎类  别:", n)
            info.append(str(n))
        pat = re.compile(r"◎语  言(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎语  言:", n)
            info.append(str(n))
        pat = re.compile(r"◎字  幕(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎字  幕:", n)
            info.append(str(n))
        #print(count,info)
        saveExcel(worksheet,count,info)
        count += 1
        print("="*100)
workbook.save("movie.xls")
print(count)

5.如此就做到了爬取我们所需要的数据是不是很简单,最后的汇总源码如下:

# -*- coding:utf-8 -*-
'''
@Author: lingchenwudiandexing
@contact: 3131579667@qq.com
@Time: 2023/8/2 10:24
@version: 1.0
'''
from urllib import response

import requests   #扒取页面
import re         #正则
import xlwt       #Excel库用于读取和写入
from bs4 import BeautifulSoup    #从网页提取信息

url = "https://www.dygod.net/html/gndy/dyzz/"
# url1 = "https://movie.douban.com/top250?start=0&filter="

hd = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188'
}







#正式代码开始
count = 0 #记录爬取的电影数量
total = []
workbook = xlwt.Workbook(encoding="utf-8")  #创建workbook对象
worksheet = workbook.add_sheet('sheet1')    #创建工作表


def saveExcel(worksheet, count, lst):
    for i, value in enumerate(lst):
        worksheet.write(count, i, value)



for i in range(2, 10):  # 爬取电影的页面数量,范围从第2页到第10页(包含第10页)
    url = "https://www.dygod.net/html/gndy/dyzz/index_"+str(i)+".html"
    # print(url)
    res = requests.get(url,headers=hd)
    res.encoding = res.apparent_encoding
    # print(res.text)

    soup = BeautifulSoup(res.text,"html.parser")
    # print(soup.title,type(soup.title))

    ret = soup.find_all(class_="tbspan",style="margin-top:6px")    #找到所有电影的表格

    for x in ret:     #遍历每一个电影表格
        info = []
        print(x.find("a").string)  #电影名称
        info.append(x.find("a").string)

        pat = re.compile(r"◎译  名(.*)\n")
        ret_translated_name = re.findall(pat, str(x))
        for n in ret_translated_name:
            n = n.replace(u'/u3000', u'')
            print("◎译  名:", n)
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎年  代(.*)\n")
        ret_year = re.findall(pat, str(x))
        for n in ret_year:
            n = n.replace(u'/u3000', u'')
            print("◎年  代:", n)
            info.append(str(n))

        pat = re.compile(r"◎产  地(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎产  地:", n)
            info.append(str(n))
        pat = re.compile(r"◎类  别(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎类  别:", n)
            info.append(str(n))
        pat = re.compile(r"◎语  言(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎语  言:", n)
            info.append(str(n))
        pat = re.compile(r"◎字  幕(.*)\n")
        ret_production_country = re.findall(pat, str(x))
        for n in ret_production_country:
            n = n.replace(u'/u3000', u'')
            print("◎字  幕:", n)
            info.append(str(n))
        #print(count,info)
        saveExcel(worksheet,count,info)
        count += 1
        print("="*100)
workbook.save("movie.xls")
print(count)

三、基础部分实现结果截屏

Python爬虫教程篇+图形化整理数据(数学建模可用),python,开发语言

 文章来源地址https://www.toymoban.com/news/detail-636707.html

Python爬虫教程篇+图形化整理数据(数学建模可用),python,开发语言

四、实验Plus升级版,增加数据汇总为图形化界面,面向对象

 1.导入图像化界面的板块

import matplotlib.pyplot as plt
import numpy as np
from bs4 import BeautifulSoup

2.实现自己想要实现的图形:(其中几行几列标注清楚)

①:初步:创建自己的画布,以及想要实现展现的语言

# 将数据保存到Pandas DataFrame对象中
columns = ["电影名称", "译名", "年代", "产地", "类别", "语言","字幕"]
df = pd.DataFrame(data, columns=columns)

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']

# 创建一个包含4个子图的画布
figure = plt.figure(figsize=(12, 8))

②:创建线形图:

# 创建线性图
subplot_line = figure.add_subplot(2, 2, 1)
x_data = np.arange(0, 100)
y_data = np.arange(1, 101)
subplot_line.plot(x_data, y_data)
subplot_line.set_title('线性图')

③:创建饼状图:

subplot_pie = figure.add_subplot(2, 2, 3)
subplot_pie.pie(genre_counts.values, labels=genre_counts.index, autopct='%1.1f%%')
subplot_pie.set_title('饼状图')

④:创建散点图:(设置好断点,不然会出现字符重叠的情况)

# 创建散点图
subplot_scatter = figure.add_subplot(2, 2, 4)
x_scatter = np.random.rand(50)
y_scatter = np.random.rand(50)
subplot_scatter.scatter(x_scatter, y_scatter)
subplot_scatter.set_title('散点图')
import warnings
warnings.filterwarnings("ignore")
plt.tight_layout()
plt.show()

⑤:到此我们整个爬虫以及数据记录便结束了,附上Plus实现截图:

Python爬虫教程篇+图形化整理数据(数学建模可用),python,开发语言

 

Python爬虫教程篇+图形化整理数据(数学建模可用),python,开发语言

 

到了这里,关于Python爬虫教程篇+图形化整理数据(数学建模可用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 数据正向化 (数学建模)

    正向化:指将指标转化为越大越好,例如求最小值,乘以符号转化为求最大值 注:x为numpy数组 极小型指标正向化: 中间型指标正向化(例如PH值需要越接近7越好,xbest=7.0,转化为越大越好): 区间型指标正向化 使用示例 输出结果 [0.  0.5 1.  0.5 0. ]

    2024年02月17日
    浏览(48)
  • 数学建模-爬虫系统学习

    尚硅谷Python爬虫教程小白零基础速通(含python基础+爬虫案例) 内容包括:Python基础、Urllib、解析(xpath、jsonpath、beautiful)、requests、selenium、Scrapy框架 编码集的演变 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一

    2024年02月14日
    浏览(37)
  • 全国研究生数学建模竞赛资料【2004-2021】【详细整理】

    2021年第十八届全国研究生数学建模竞赛 【A题】相关矩阵组的低复杂度计算和存储建模 [题目] [附件] [优秀论文 0,1,2,3,4,5,6] 【B题】空气质量预报二次建模 [题目] [附件] [优秀论文 0,1,2,3,4,5,6,7,8] 【C题】帕金森病的脑深部电刺激治疗建模研究 [题目] [附件] [优秀论文 0,1,2,3,4,5,

    2024年02月06日
    浏览(55)
  • 数学建模 latex 图片以及表格排版整理(overleaf)

    无论是什么比赛,图片和表格的格式都非常重要,这边的重要不只是指规范性,还有抓住评委眼球的能力。 那么怎样抓住评委的眼球? 最重要的一点就是善用 图片 和 表格 (当然撰写论文最重要的是 逻辑 ,这个是需要长期的阅读和总结训练的,前期甚至还需要大量的背诵

    2023年04月10日
    浏览(45)
  • 数学建模整理-线性规划、整数规划、非线性规划

    在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。若目标函数及约束条件均为线性函数,则称为线性规划(Linear Programming 简记 LP)。 可行解 :满足约束条件的解。 可行预 :所有可行解构成的集合称为问题的可行域,记为R。 图解法

    2024年02月06日
    浏览(41)
  • python实现逻辑回归-清风数学建模-二分类水果数据

    👉👉👉二分类水果数据 可以看到有4个特征,2种分类结果,最后4个没有分类结果的数据是拿来预测的 X(特征) … Y(target) 最后四个预测结果: 先用特征组合展示数据散点图,从直观上看哪些特征能有效区分水果 分类准确率不算太高:清风视频里用的spss准确率也只有

    2024年02月15日
    浏览(42)
  • Python数据可视化库Matplotlib绘图学习(二维)&数学建模

    如果没有出现错误,就说明安装成功。 一元二次函数图像: 运行效果: 解释: as: 重命名,将长串的函数库改一个容易书写的名字 range函数: 生成范围内所有的数字 列表推导式: 列表推导式(List Comprehension)是一种简洁地创建新列表的方法,它可以基于现有的列表、集合

    2024年02月07日
    浏览(48)
  • 数据分析课程设计(数学建模+数据分析+数据可视化)——利用Python开发语言实现以及常见数据分析库的使用

    目录 数据分析报告——基于贫困生餐厅消费信息的分类与预测 一、数据分析背景以及目标 二、分析方法与过程 数据探索性与预处理 合并文件并检查缺失值 2.计算文件的当中的值 消费指数的描述性分析 首先对数据进行标准化处理 聚类模型的评价 聚类模型的结果关联 利用决

    2024年02月12日
    浏览(57)
  • 2023 年高教社杯全国大学生数学建模竞赛-E 题 黄河水沙监测数据分析详解+思路+Python代码

    十分激动啊啊啊题目终于出来了!!官网6点就进去了结果直接卡死现在才拿到题目,我是打算A-E题全部做一遍。简单介绍一下我自己:博主专注建模四年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。参与过十余次数学

    2024年02月09日
    浏览(54)
  • 【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

    坑洼道路检测和识别是一种计算机视觉任务,旨在通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这对于地.质勘探、航天科学和自然灾害等领域的研究和应用具有重要意义。例如,它可以帮助在地球轨道上识别坑洼,以及分析和模拟地球表面的形态。 在坑洼

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包