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)

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

 

四、实验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实现截图:

 

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python股票数据爬虫分析可视化框架有很多选择,下面我会介绍其中几个比较流行的框架。 1. BeautifulSoup:BeautifulSoup是一个强大的HTML/XML解析库,可以用来爬取网页上的股票数据。它提供了简单的API来遍历和搜索HTML/XML文档树,使得爬取股票数据变得相对简单。虽然BeautifulSoup本身并不提供数据分析和可视化的功能,但可以结合其他Python库,如Pandas和Matplotlib等进行进一步的数据分析和可视化。 2. Scrapy:Scrapy是一个功能强大的Python爬虫框架,它提供了丰富的特性和工具,使得构建复杂的爬虫变得简单。使用Scrapy可以方便地定义爬虫的规则和流程,通过XPath或CSS选择器等方式抓取股票数据。类似于BeautifulSoup,Scrapy本身并不提供数据分析和可视化功能,但可以结合其他库进行进一步的分析和可视化。 3. Pandas:Pandas是一个用于数据处理和分析的库,它提供了高效的数据结构和数据分析工具。可以使用Pandas读取和处理从网页爬取得到的股票数据,进行数据清洗、转换和分析。Pandas还集成了Matplotlib和Seaborn等可视化库,可以用来绘制各种类型的图表和可视化结果。 4. Matplotlib:Matplotlib是一个用于绘制2D图表和可视化数据的库。在股票数据分析中,可以使用Matplotlib来绘制股票走势图、K线图、柱状图等各种图表,直观地展示股票数据的变化情况。 总而言之,以上是几个常用的Python股票数据爬虫分析可视化框架。根据具体的需求和个人偏好,选择适合自己的框架进行开发和使用。这些框架在数据爬取、处理、分析和可视化方面都具有优势,可以帮助我们更好地理解和分析股票数据。 ### 回答2: Python股票数据爬虫、分析和可视化是金融领域中常见的应用之一。在这个过程中,我们使用Python编程语言以及相关的库和框架来从互联网上获取股票数据,对数据进行分析,并将结果可视化展示出来。 首先,我们需要使用Python中的爬虫工具来从网站上爬取股票数据。常用的爬虫库包括Requests和BeautifulSoup。使用这些库,我们可以向股票数据提供网站发送HTTP请求,并根据网站的HTML结构提取所需的数据。 然后,我们可以使用Python中的数据分析库如Pandas、NumPy和SciPy来对股票数据进行处理和分析。这些库提供了灵活强大的数据结构和函数,可以进行数据清洗、数据计算以及统计分析等操作。我们可以使用这些库来计算股票的收益率、波动性、相关性等指标,从而帮助我们更好地理解股票市场的情况。 最后,我们可以使用Python中的可视化库如Matplotlib和Seaborn来将分析结果呈现出来。这些库提供了各种绘图函数和样式,可以绘制折线图、柱状图、散点图等不同类型的图表。通过可视化,我们可以更直观地观察和分析股票数据的趋势和变化,帮助我们做出更明智的投资决策。 总而言之,Python股票数据爬虫、分析和可视化框架给予我们在金融领域中研究和应用股票数据的能力。通过这个框架,我们可以轻松地从互联网上获取股票数据,对数据进行分析,并通过可视化展示出来,从而更好地理解和利用股票市场的信息。 ### 回答3: 对于股票数据爬虫、分析和可视化处理,Python提供了多个强大的框架。以下是其中几个常用的框架和库: 1. BeautifulSoup:用于从网页中提取数据的库。通过解析HTML文档,可以方便地提取股票数据。 2. Scrapy:一个高效的网络爬虫框架,适用于大规模的数据爬取。可以用于爬取多个股票网站的数据。 3. Pandas:一个流行的数据处理和分析库。可以使用Pandas加载股票数据并进行数据清洗、分析、转换和计算。 4. NumPy:一个用于科学计算的库。在股票数据分析中,NumPy提供了针对数组和矩阵运算的丰富功能。 5. Matplotlib:一个绘图库,用于生成各种类型的图形。可以使用Matplotlib创建股票历史价格趋势图、K线图等可视化结果。 6. Seaborn:基于Matplotlib的库,用于创建更美观的统计图表。Seaborn可以用于创建股票收益率分布图、相关性矩阵等。 7. Plotly:一个交互式的可视化库,可以创建基于Web的动态图表。通过Plotly,可以创建可交互的股票走势图和K线图等。 使用这些框架和库,可以通过Python实现全流程的股票数据爬取、分析和可视化处理。首先,使用爬虫框架(如BeautifulSoup或Scrapy)爬取股票数据;然后,使用Pandas和NumPy进行数据处理和分析;最后,使用Matplotlib、Seaborn或Plotly将分析结果可视化呈现。这样,可以得到直观、清晰的图表,帮助用户更好地理解股票数据的变化和趋势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值