精华内容
下载资源
问答
  • 网络爬虫的数据提取与分析
    2020-12-02 16:22:47

    数据分析重要步骤:

    1.数据获取

    可以进行人工收集获取部分重要数据

    可以在各个数据库中导出数据

    使用Python的爬虫等技术

    2.数据整理

    从数据库、文件中提取数据,生成DataFrame对象

    采用pandas库读取文件

    3.数据处理

    数据准备:

    对DataFrame对象(多个)进行组装、合并等操作

    pandas操作

    数据转化:

    类型转化、分类(面元等)、异常值检测、过滤等

    pandas库的操作

    数据聚合:

    分组(分类)、函数处理、合并成新的对象

    pandas库的操作

    4.数据可视化

    将pandas的数据结构转化为图表的形式

    matplotlib库

    5.预测模型的创建和评估

    数据挖掘的各种算法:

    关联规则挖掘、回归分析、聚类、分类、时序挖掘、序列模式挖掘等

    6.部署(得出结果)

    从模型和评估中获得知识

    知识的表示形式:规则、决策树、知识基、网络权值

    爬取网页数据步骤:

    简介:

    (1)网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者):是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据。

    (2)爬虫可以做什么?你可以用爬虫爬图片,爬取视频等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取。当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果所以用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源。

    页面获取

    1.根据URL获取网页

    URL处理模块(库)import urllib.request as req

    创建一个表示远程url的类文件对象req.urlopen(' ')

    如同本地文件一样读取内容

    importurllib.request as req#根据URL获取网页:#http://www.hbnu.edu.cn/湖北师范大学

    url = 'http://www.hbnu.edu.cn/'webpage= req.urlopen(url) #按照类文件的方式打开网页#读取网页的所有数据,并转换为uft-8编码

    data = webpage.read().decode('utf-8')print(data)

    2.网页数据存入文件

    #将网页爬取内容写入文件

    importurllib.request

    url= "http://www.hbnu.edu.cn/"responces=urllib.request.urlopen(url)

    html=responces.read()

    html= html.decode('utf-8')

    fileOb= open('C://Users//ALICE//Documents//a.txt','w',encoding='utf-8')

    fileOb.write(html)

    fileOb.close()

    此时我们从网页中获取的数据已保存在我们指定的文件里,如下图所示:

    网页获取

    从图中可以看出,网页的所有数据都存到了本地,但是我们需要的数据大部分都是文字或者数字信息,而代码对我们来说并没有用处。那么我们接下来要做的是清除没用的数据。

    之后需要数据清洗,接下来的请听下回分解。

    更多相关内容
  • 该系统首先利用网络爬虫技术对相关网站上感兴趣的原始数据进行爬取,然后通过预处理模块对获取到的数据进行去重、消噪及特征提取,最后利用数据分析的方法实现网络舆情的分析与预警。系统的各项测试结果验证了该系统...
  • 上一节爬取了网络图片,写的不过瘾,最近发文访问量破1W了,主页看不到具体的访问量数有点小苦恼,刚好写个脚本来解决这个问题,练练手。 技术框架 bs4 + requests库 bs4教程:Python中使用Beautiful Soup库的超...
  • 网络爬虫是一个自动提取网页的程序,它为搜索 引擎从万维网上下载网页,是搜索引擎的重要组 成。传统爬虫从一个或若干初始网页的URL开始, 获得初始网页上的URL,在抓取网页的过程中, 不断从当前页面上抽取新的URL...
  • 网络爬虫-Python和数据分析.pdf
  • 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入...
  • 基于Python的网络爬虫与数据可视化分析

    万次阅读 多人点赞 2020-07-26 10:43:12
    网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和采集到的网页信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或若干初始网页的链接开始进而得到一个链接

    1 背景分析

    在互联网技术迅速发展的背景下,网络数据呈现出爆炸式增长,对数据的应用需要在大量数据中记性挖掘搜索,搜索引擎结合这一需求就应运而生,不只是搜索数据信息,还要帮助人们找到需要的结果被人们所应用。信息数据的处理就需要爬虫技术加以应用来收集网络信息。作为搜索引擎的重要组成部分,网络爬虫的设计直接影响着搜索引擎的质量。网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和采集到的网页信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或若干初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页里抽取新的链接放入到链接队列中,直到爬虫程序满足系统的某一条件时停止。
    Python语言简单易用,现成的爬虫框架和工具包降低了使用门槛,具体使用时配合正则表达式的运用,使得数据抓取工作变得生动有趣。在数据搜索方面,现在的搜索引擎虽然比刚开始有了很大的进步,但对于一些特殊数据搜索或复杂搜索,还不能很好的完成,利用搜索引擎的数据不能满足需求,网络安全,产品调研,都需要数据支持,而网络上没有现成的数据,需要自己手动去搜索、分析、提炼,格式化为满足需求的数据,而利用网络爬虫能自动完成数据获取,汇总的工作,大大提升了工作效率。
    网络在我们的生活中越来越重要,网络的信息量也越来越大,研究该课题可以更好的理解网络爬虫的原理以及可视化分析的作用。

    2 需求分析

    现在的社会已经进入了信息时代,尤其是网络购物成为一种很普遍的购物方式,大数据的获取和分析对于促进经济发展有着重要的意义。掌握消费者的爱好和习惯,有助于商家及时的调整商品的类型和定价。
    手机在我们的日常生活中使用的越来越频繁,为了更好的掌握消费者对于手机品牌、价格以及店铺的喜好程度,我们选取京东网站的手机产品作为我们研究的目标,通过网络爬虫技术获取网站的数据,利用数据库技术存储数据,最后用可视化分析的形式给出我们最终的研究结果。

    3 详细设计及技术原理

    项目设计主要分为几个步骤:根据需求,确定我们需要爬取的网站和数据类型;通过Python爬虫技术对网页进行解析;将数据持久化,存储到数据库中,以便于随时提取、查询、添加数据;通过获取的数据进行可视化分析,得到我们的结论。整个过程如图3.1所示:
    在这里插入图片描述

    图3.1 项目设计流程图

    3.1 网络爬虫技术简介

    网络爬虫技术,别名“网络蜘蛛”,指的就是一种通过依照既定程序自动获取网页信息或脚本的技术。其可以在互联网当中帮助搜索引擎下载各类信息资料,并通过依次进行数据的采集和分析处理。最后完成数据的统一存储。当程序处于正常运行阶段时,爬虫会从一个或多个初始URL开始下载网页内容,随后依托搜索方式或内容匹配法将网页中其所需内容进行精准“抓取”,与此同时爬虫也会不间断地从网页中获取新URL。当爬虫检索到的信息满足停止条件时将自动停止检索。此时其将自动进入到抓取数据的处理环节,通过构建索引并妥善存储数据,使得用户可以依照自身的实际需求随时提取、查阅数据库中的数据资料。
    基于Python的网络爬虫技术,因使用了Python编写程序,可以抛弃传统笨重的IDE,仅使用一个文本编辑器便可以基本完成开发网络爬虫技术功能,为技术人员的编程工作提供巨大便利。加之Python本身拥有相对比较完善的爬虫框架,可支持迅速挖掘、提取和处理信息数据等程序任务。在充分发挥Python强大网络能力下,即便面对海量的信息数据检索要求,只通过编写少数代码便可以有效完成网页下载并利用其网页解析库,准确解读和表达各网页标签,以有效提升抓取数据的质量水平。

    4 功能实现

    本项目以手机为例,对京东商城中50多个手机品牌(华为、Apple、小米、OPPO、VIVO……)进行了数据的爬取,获得了超过5万条的数据,包括商品品牌、商品名称、售价、店铺信息、评价量等信息,并将数据存储到MySQL数据库中。在数据分析阶段,我们对获取到的数据从多个角度进行了可视化分析,并给出了我们的结论。

    4.1 网页分析

    4.1.1 URL地址构建

    登录京东网站,搜索关键词“手机”可以发现,在返回的搜索结果中,虽然显示有83万+件商品,但页面只有100页,每页只有60件商品。这是由于京东网站的反爬虫机制,导致无法显示所有的商品。为了获得更多的数据量,我们采用二级关键词进行检索的方式,在图4.1中我们可以看到,在品牌那一栏有所有的手机品牌信息,如“华为手机”、“Apple手机”,这样可以在很大程度上增加我们的数据量。
    在这里插入图片描述

    图4.1 京东网站商品列表页面

    构建URL地址。查看搜索二级关键词之后的网站地址:https://search.jd.com/search?keyword=%E6%89%8B%E6%9C%BA&wq=%E6%89%8B%E6%9C%BA&ev=exbrand_%E5%8D%8E%E4%B8%BA%EF%BC%88HUAWEI%EF%BC%89%5E。此时的网址看上去比较复杂,图中的汉字已经进行过重新编码,我们还需要对其简化处理,简化后构建的URL为:
    https://search.jd.com/Search?’ + parse.urlencode(keyword) + ‘&ev=exbrand_%s’%(华为) + ‘&enc=utf-8’ + ‘&page=%s’%(2n-1)
    使用urlencode将keyword转码成可识别的url格式,enc以utf-8方式编码,并得传入对应page,得到完整的url。Keyword处代表关键词“手机”, exbrand后面代表的是二级关键词,如“华为(HUAWEI)”。另外京东网站的page变化规律是n
    2-1。这样就构建出我们的URL地址。

    4.1.2 网页分析

    通过分析网页的元素,可以找到商品列表在good-list中,继续往下分析可以找到商品名称、手机价格、评价量、店铺信息、图片地址、商品地址等数据。首先导入bs4包,然后就可以使用BeautifulSoup库了,通过使用BeautifulSoup提供的强大的解析方法,即可解析出网页中我们想要的数据。
    在这里插入图片描述

    图4.2 网页审查元素页面

    4.2 数据库存储

    MySQL是一种关系型数据库,关系型数据库最重要的概念就是表,表具有固定的列数和任意的行数,在数学上称为“关系”二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录,表中的列属性,称为Field,相当于通常记录中的一个数据项,也叫做列、字段。
    首先,打开数据库连接之前,一定保证打开MySQL服务,否则就会出现连接失败的情况。Navicat for MySQL是一款强大的MySQL数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,对于数据库的可视化是很方便简洁的。然后,我们要设置好数据库连接的相关配置,以便于我们可以在Python中成功连接数据库,包括数地址、端口号、用户名、密码,具体的配置信息如图4.3所示:
    在这里插入图片描述

    图4.3 数据库连接配置信息

    最后,在数据库中创建表格,用来存储数据。数据库建表语句如图4.4所示。我们建立的商品信息表包含8列,分别是商品ID、手机品牌、商品名称、价格、店铺信息、评论量、图片地址、商品详情页地址。并且以京东的商品ID为主键,这样做可以避免因为商品名称的重复导致的保存失败的情况,每一件商品的ID在京东商城里都是唯一的。
    在这里插入图片描述

    图4.4 数据库建表语句

    4.3 爬取数据过程

    在完成上述工作及配置之后,我们就可以正式的编写代码来爬取数据了。将我们的爬虫伪装成浏览器去获取网页,然后对网页解析,得到我们需要的数据,最后将数据存储到MySQL数据库中。为了保证报告的美观和质量,在此部分将不再展示代码,全部的源代码见附录。最终得到的数据如图4.5所示:
    在这里插入图片描述

    图4.5 MySQL数据库中的数据

    5 数据分析

    在得到数据之后,我们对数据进行了全方面多维度的分析,在原有数据的技术上进行深度挖掘,具体的过程如下。

    5.1 数据的预处理

    从图5.1中可以看出,由于我们直接得到的数据里面的数据类型以及可用的信息比较少,品牌名称比较混乱复杂,商品名称较长无法知道商品具体属性,评论数量单位不统一等,这些问题的存在会直接影响我们的分析结果。
    在这里插入图片描述

    图5.1 原始数据图

    为了更方便我们的处理,在可视化分析之前,我们对数据进行了预处理操作,如图5.2所示。首先对于手机品牌,删除无用的后缀括号里的内容,使名称看上去更加简洁。其次对评论量进行了处理,将带单位“万”的数据都进行了单位的统一,方便我们后续计算使用。然后我们利用关键词检索的方式,对商品类型进行了划分,判断出它们是属于手机还是配件,是新手机还是二手手机,这些对于后续的统计计算结果有着非常大的影响。最后,我们对手机类型进行了划分,分为智能手机、商务手机、老年手机、5G手机、学生手机,在后续的处理中,我们会对不同类型的手机价格及购买人数进行可视化分析。
    在这里插入图片描述

    图5.2 预处理之后的数据

    我们主要从三个大角度对数据进行可视化分析:店铺销量分析、品牌商品分析、手机类型分析。由于京东网站上不显示具体的销量,这里我们把评论量近似等于购买人数,后面不再进行说明。

    5.2 店铺销量分析

    5.2.1 不同店铺销量分析

    我们选取了销量前7的店铺进行了对比分析,从图5.3中可以看出,“荣耀京东自营店”、“小米京东自营旗舰店”、“华为京东自营官方旗舰店”、“Apple产品京东自营旗舰店”的销量占比比重较大,也反映出华为、小米、Apple的手机产品在市场中占有比较大的份额。
    在这里插入图片描述

    图5.3 不同店铺销量分析

    5.2.2 不同店铺平均售价分析

    在这里插入图片描述

    图5.4 售价8000元以上店铺平均售价分析

    由于品牌众多,考虑到报告篇幅的限制,无法将所有的店铺均价一一对比显示,我们选取平均售价8000元以上的店铺进行对比分析。从图5.4中可以看出,“VERTU官方旗舰店”的手机均价最高,达到了近8万元,其他比较高端的手机品牌店铺售价也都在一万元左右。

    5.3 品牌商品分析

    5.3.1 不同价格区间购买人数

    为了更好的看到不同的价格区间的购买人数信息,我们对原始数据进行了价格分层,500元以下、500-1000元、1000-3000元、3000-5000元、5000元以上。从图5.5中可以看出,大部分人的选择在1000-3000元之间,占比39.55%。只有7.33%的人选择购买5000元以上的手机。
    在这里插入图片描述

    图5.5 不同价格区间购买人数

    5.3.2 不同品牌的平均价格

    在图5.6中,我们以柱状图的形式将不同品牌的平均价格展示出来,从中可以看出,均价3000元以上的手机品牌中,Vertu品牌的均价最高,达到近6万元,其他品牌均价在1万元左右;均价1000-3000元的手机品牌的差距不是特别明显,黑鲨、华为、OPPO、iQOO、一加这几个品牌的手机均价较高。

    在这里插入图片描述
    在这里插入图片描述

    图5.6 不同品牌的平均价格

    5.3.3 商品价格与购买人数关系

    在有大量的数据下,散点图相比于其他的图形,在反映两个变量相互关系下更具有优势。为了更直观的看出商品价格与购买人数之间的关系,我们采用散点图的形式,将其表现出来。
    从图5.7中可以看出,排除个别品牌或者店铺影响力的情况下,从总体分布情况来看,商品的售价越低,购买人数越多;商品售价越高,购买人数越少。因此,根据这些可以帮助商家及时的调整价格,增加销量。
    在这里插入图片描述

    图5.7 商品价格与购买人数关系散点图

    5.4 手机类型分析

    5.4.1 不同手机类型平均价格分析

    目前市面上充斥着各种类型的手机商品,特别是近年来,“5G手机”成为大众追捧的热点。因此,我们对不同的手机类型进行了对比分析。如图5.8所示,商务手机相比于其他手机要贵很多,均价达到近1万元;其次是5G手机,随着近年的快速发展,其价格相比于普通的智能手机要高一点,达到了近5000元;另外,老年手机和学生手机因为功能较少,配置较低,因此它的售价也比较低,只有500元左右。
    在这里插入图片描述

    图5.8 不同手机类型平均价格分析

    5.4.2 不同手机类型购买人数占比分析

    从图5.9中可以看出,有80.8%的人选择购买普通智能手机;5G手机的占比还比较少,只有6%;老年手机占比11.8%。
    在这里插入图片描述

    图5.9 不同手机类型购买人数占比分析

    6 结论

    通过几周对Python爬虫以及数据可视化分析的学习,我们在这过程中查阅了大量的资料,经过多次实验分析,最终形成我们的项目报告。主要实现了对京东商城中手机商品数据的爬取以及数据分析工作,掌握了Python常用包函数以及数据库的使用方法。总体而言,网络编程这门课让我们学到了很多的东西,网络在我们身边无处不在,学会网络编程对于我们日常的学习和工作都有很大的帮助。
    由于时间有限,我们的项目还有一定的不足,后续有机会将会继续改进。

    有问题可以随时留言交流

    展开全文
  • 基金数据爬虫与数据分析

    千次阅读 2021-11-26 16:15:43
    这篇文章主要为大家分享对基金数据的爬取,并通过python对获取的基金数据做一定的数据分析,如净值数据绘图,周均值,月均值的计算,及搜寻处于下降态势的基金,通过这些方法能对基金的买入卖出提供一定的辅助作用...

    这篇文章主要为大家分享对基金数据的爬取,并通过python对获取的基金数据做一定的数据分析,如净值数据绘图,周均值,月均值的计算,及搜寻处于下降态势的基金,通过这些方法能对基金的买入与卖出提供一定的辅助作用!最后还是建议大家尽量不要盲目相信数据分析结果或者群众引导而进行买入和卖出,一定要结合自身对该基金或者股票的思考来考虑是否进行买入和卖出操作。

    目录

    1.基金数据爬取

    1.工具准备:

    ​ 在此主要应用python进行爬虫,主要会应用的包如下:

    from bs4 import BeautifulSoup                  #进行网页解析获取数据
    import re                                      #正则表达式,进行文字匹配
    import urllib.request,urllib.error             #制定URL。获取网页数据
    import xlwt                                    #进行excel操作
    import pandas as pd
    import numpy as np
    from matplotlib import pyplot as plt
    import random
    import xlrd
    

    其中bs4包主要用于网页解析数据,re包用于语言正则化,用requests来获取网页数据。而以下的包主要用于数据分析,如果只想爬取基金数据,以上的包就已经足够了。数据分析包,pandas,numpy主要用于数组矩阵分析等数值计算;matpoltlib主要用于绘图,与matlab相关绘图方法和函数类似,学过或者用过matlab的朋友对此并不困难,各个数据分析的包处理方法都比较友好,易上手。

    2.数据爬虫流程:

    ​ 所谓,爬虫,即万千的网页,就像一张巨大的网,网中不同的节点存储着各种各样的数据,如新闻,基金,股票,游戏,图片等等。我们通过计算机的手段在指定的节点处快速获取我们想要的信息即爬虫。

    ​ 爬虫的基本流程:模拟浏览器发送请求(获取网页代码)->通过正则表达式或其他方法提取有用数据->存放于数据库或者文件中

    3.基金网站的选择:

    明确了爬虫流程,我们还需要找到合适的基金网站,因为目前很多网站为了防止信息泄露,进行了反爬虫手段;比如建立浏览身份头user-agent的白名单,只有浏览时使用白名单范围内的user-agent才能有效访问。当然对此我们也可以通过伪装白名单的浏览器的手段来浏览网页;除此之外,反爬虫技术还有很多,如IP限制,JS脚本来防止爬虫等等。

    当然,如果在爬虫的开始,我们就能找到具有目标信息且较友好的网站即是最好最方便的!

    在此我们选择的基金网站是蛋卷基金网站:

    http://www.danjuanapp.com/
    

    网络页面如下:

    在这里插入图片描述

    ​ 首先我们随意选择一个基金,进入其净值所在的网页下:

    在这里插入图片描述

    在这里插入图片描述

    进入后,点击ctrl+shift+c查看网页代码,并点击网络(net)属性,:

    在这里插入图片描述

    进行网页刷新,点击XHR:

    在这里插入图片描述

    在这里可以看到数据传送的网页,你可以尝试点击查看能否顺利打开,可以发现其能顺利打开,包含基金的净值,百分比,时间信息,且该网址有章可循,能为后期的爬虫处理带来方便:

    在这里插入图片描述

    在此我们便找到了想要爬虫的网站网址及编写方法:

    https://danjuanapp.com/djapi/fund/nav/history/(基金代码)?size=30&page=1(页数)
    

    4.数据爬虫:

    ​ 有了数据爬取的网址编写方法,接下来我们就可以轻松的开始爬取网页数据了;

    (1) 首先定义网页与发送访问请求的user-agent:

    url="https://danjuanapp.com/djapi/fund/nav/history/"
    guding="?size=30&page="
    header={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) "
            "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
    

    在这里我们将该网址分成url和guding两端写,当我们想访问确定代码的网址时就可以通过以下方式来访问:

    url+(基金代码)+guding
    

    (2)接下来利用requests进行网页数据获取及正则化表达处理,代码如下:

    url=url+daima+guding
    print("正在爬取基金数据代号:",daima)
    for i in range(1,31):
        urll=url+str(i)
        print(urll)
        req=urllib.request.Request(url=urll,headers=header)			#制定url,获取网页数据
        response=urllib.request.urlopen(req)
        html=response.read().decode("utf-8")
        date=date+re.findall(r'"date":"(.*?)"',html)				#正则化表达式,分别找到日期,净值,百分比数据
        value=value+re.findall(r'"value":"(.*?)"',html)
        percentage=percentage+re.findall(r'"percentage":"(.*?)"',html)
    

    (3)剩下的就是数据存储了,这里将每个代码的基金放入每个创建的excel表中,以便我们后期进行分析使用。该段代码如下:

        savepath="./"+daima+".xls"
        name=daima
        book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建workbook对象
        sheet = book.add_sheet(name,cell_overwrite_ok=True)  # 创建工作表
        col=("日期","百分比增减","净值")
        num= len(date)
        for i in range(0,3):
            sheet.write(0,i,col[i])  #列名
        for i in range(0,num):
            j=num-i
            #print("爬取", date[j-1])
            sheet.write(i+1,0,date[j-1])
            sheet.write(i+1,1,percentage[j-1])
            sheet.write(i+1,2,value[j-1])
        book.save(savepath)  # 保存数据表
        print("爬取成功!")
    

    (4)运行结果,通过以上步骤,我们将能对特定代号的基金进行数据提取,并存入excel表中,对应excel表的名称为该基金的代码,结果如下:

    在这里插入图片描述

    (5)将上述步骤结合起来,编写成函数,主要参数即为需要爬取的基金代码,返回爬取基金数据的excel表,函数代码如下:

    '''基金数据爬取函数,主要参数输入基金代码,完成该基金数据获取'''
    def jijinspider(daima="160002"):
        #获取网页
        #daima=int(daima)
        url="https://danjuanapp.com/djapi/fund/nav/history/"#https://danjuanapp.com/djapi/fund/nav/history/004194?size=30&page=1
        guding="?size=30&page="
        header={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) "
                              "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
        date=[]
        value=[]
        percentage=[]
        url=url+daima+guding
        print("正在爬取基金数据代号:",daima)
        for i in range(1,31):
            urll=url+str(i)
            print(urll)
            req=urllib.request.Request(url=urll,headers=header)
            response=urllib.request.urlopen(req)
            html=response.read().decode("utf-8")
            date=date+re.findall(r'"date":"(.*?)"',html)
            value=value+re.findall(r'"value":"(.*?)"',html)
            percentage=percentage+re.findall(r'"percentage":"(.*?)"',html)
            #print(date)
        savepath="./"+daima+".xls"
        name=daima
        book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建workbook对象
        sheet = book.add_sheet(name,cell_overwrite_ok=True)  # 创建工作表
        col=("日期","百分比增减","净值")
        num= len(date)
        for i in range(0,3):
            sheet.write(0,i,col[i])  #列名
        for i in range(0,num):
            j=num-i
            #print("爬取", date[j-1])
            sheet.write(i+1,0,date[j-1])
            sheet.write(i+1,1,percentage[j-1])
            sheet.write(i+1,2,value[j-1])
        book.save(savepath)  # 保存数据表
        print("爬取成功!")
    

    2.基金数据月均值,周均值分析及净值绘图

    根据基金数据的爬取,我们就可以对基金数据进行一定的分析和操作,目前,我对基金数据进行了月均值分析,周均值分析以及净值绘图,当然也还可以对百分比进行绘图或进行其他的数据分析,感兴趣的朋友可以接着这里继续进行数据分析,来使买入的基金对自己利益最大化。

    (1)周均值分析,主要参数为excel表格,返回周均值列表

    '''基金周均值分析,主要参数为excel表格,返回周均值列表'''
    def weekavr(sheetpath):
        jijinshu=pd.read_excel(sheetpath,skiprows=1,usecols=[1,2])
        jijinshuju=np.array(jijinshu)
        #jijinshuju=np.loadtxt(sheetname,skiprows=1,usecols=[1,2],encoding='utf-8')
        #print(jijinshuju)
        shujusize=jijinshuju.shape
        #print(shujusize[0])
        weekavre=[]
        avrshu=0
        for i in range(0,shujusize[0]):
            if i%7!=6:
                avrshu=avrshu+jijinshuju[i,1]
            elif i==shujusize[0]-1 and i%7!=6:
                j=i%7
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu=avrshu/(j+1)
                weekavre.append(avrshu)
                avrshu=0
            else:
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu /7
                weekavre.append(avrshu)
                avrshu = 0
        #print(monthavr)
        return  weekavre
    

    (2)月均值分析,主要参数为excel表格,返回周均值列表

    '''月均值函数,这个函数主要返回基金每月均值,输入主要参数为基金存储表格路径'''
    def monthavr(sheetpath):
        jijinshu = pd.read_excel(sheetpath, skiprows=1, usecols=[1, 2])
        jijinshuju = np.array(jijinshu)
        # jijinshuju=np.loadtxt(sheetname,skiprows=1,usecols=[1,2],encoding='utf-8')
        # print(jijinshuju)
        shujusize = jijinshuju.shape
        # print(shujusize[0])
        monthavr = []
        avrshu = 0
        for i in range(0, shujusize[0]):
            if i % 30 != 29:
                avrshu = avrshu + jijinshuju[i, 1]
            elif i == shujusize[0] - 1 and i % 30 != 29:
                j = i % 30
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu / (j + 1)
                monthavr.append(avrshu)
                avrshu = 0
            else:
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu / 30
                monthavr.append(avrshu)
                avrshu = 0
        # print(monthavr)
        return monthavr
    

    (3)净值,周均值变化绘图,主要参数为:周均值矩阵,基金数据excel表格名称,在使用时注意代码中的路径为当前文件路径,如果路径不一样,可以修改代码路径或修改表格路径到当前文件路径:

    '''这个函数主要用于画出基金几年时间段的数据变化趋势,主要参数为:周均值矩阵,基金数据excel表格'''
    def jijinplot(sheetname,weekavr):
        imagename=sheetname
        sheetname="./"+sheetname
        jijinshuju=pd.read_excel(sheetname)
        jijinshuju_now=np.array(jijinshuju)
        num=len(jijinshuju_now[:,1])
        plt.plot(jijinshuju_now[:,0],jijinshuju_now[:,2])
        plt.xticks(range(1,num,75), rotation=35)
        plt.title(imagename)
        plt.xlabel("time")
        plt.ylabel("value")
        num=len(weekavr)
        for i in range(0,num):
            xx=jijinshuju_now[7*i:7*i+7,0]
            xx=np.array(xx)
            #print(xx)
            yy=[weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i]]
            plt.plot(xx,yy)
    
            #plt.xticks([])
        plt.show()
    

    效果如下图所示,净值变化折线与网站一致:

    在这里插入图片描述

    3.搜寻处于下降态势的基金

    这一步,主要目的在于找到处于下降态势的基金,并输出。日常,大家都愿意将资金在基金或者股票处于低谷时进行投入,以期望在基金或股票上涨时牟取利益,这个函数主要作用就在于每次随机的搜寻处于下降态势的基金,并输出,供大家思考和选择。

    这个函数除以下代码外,需要所有基金的代码表,这个表可以通过百度获取,将它整理为excel表格如下图所示,并不困难,这里不再赘述。

    在这里插入图片描述

    以下为实现代码与运行效果图:

    '''下降基金代号获取函数,当前处于降低时期的基金,主要针对当前月均值,与周均值处于下降阶段,找到5个后停止,返回基金代号'''
    def find_decend():
        # 获取网页
        url = "https://danjuanapp.com/djapi/fund/nav/history/"  # https://danjuanapp.com/djapi/fund/nav/history/004194?size=30&page=1
        guding = "?size=30&page="
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                                "Chrome/86.0.4240.198 Safari/537.36"}
        sheetpath = "./基金代码.xlsx"
        jijinshu = pd.read_excel(sheetpath,dtype=str)
        # jijinshu.info()
        jijinshuju = np.array(jijinshu)
        strr = jijinshuju[0, 0].zfill(6)
        jijinshuju[0, 0] = strr
        for i in range(0, 4178):
            strr = jijinshuju[i, 0].zfill(6)
            jijinshuju[i, 0] = strr
        date = []
        value = []
        percentage = []
        yx_daima=[]
        daima=""
        jiance=0
    
        while (jiance<5) :
            find_rand = np.random.randint(1000, 4179, (1, 100))
            for j in range(0,100):
                daima = jijinshuju[find_rand[0,j],0]
                # print(daima)
                url0 = url + daima + guding
                print("正在随机验证基金代码:", jijinshuju[find_rand[0,j],0])
                for i in range(1, 10):
                    urll = url0 + str(i)
                    #print(urll)
                    req = urllib.request.Request(url=urll, headers=header)
                    html = ""
                    response = urllib.request.urlopen(req)
                    html = response.read().decode("utf-8")
                    #date = date + re.findall(r'"date":"(.*?)"', html)
                    value = value + re.findall(r'"value":"(.*?)"', html)
                    percentage = percentage + re.findall(r'"percentage":"(.*?)"', html)
                    # print(date)
                #date=np.array(date)
                #value=np.array(value,dtype=float)
                #percentage=np.array(percentage)
                shujusize = len(value)
                if shujusize<100:
                    break
                # print(value)
                value_wk=[]
                for float_i in value:
                     value_wk.append(float(float_i))
                # print("shujusize:",shujusize)
                # print(shujusize)
                monthavr = []
                avrshu = 0.00
                for i in range(0, shujusize):
                    if i % 30 != 29:
                        avrshu = avrshu + value_wk[i]
                    elif i == shujusize - 1 and i % 30 != 29:
                        j = i % 30
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / (j + 1)
                        monthavr.append(avrshu)
                        avrshu = 0
                    else:
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / 30
                        monthavr.append(avrshu)
                        avrshu = 0
                weekavre = []
                avrshu = 0
                for i in range(0, shujusize):
                    if i % 7 != 6:
                        avrshu = avrshu + value_wk[i]
                    elif i == shujusize - 1 and i % 7 != 6:
                        j = i % 7
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / (j + 1)
                        weekavre.append(avrshu)
                        #print(avrshu)
                        avrshu = 0
                    else:
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / 7
                        #print(avrshu)
                        weekavre.append(avrshu)
                        avrshu = 0
                # weekavre=np.array(weekavre)
                # monthavr=np.array(monthavr)
                week_size=len(weekavre)
                month_size=len(monthavr)
                # print(weekavre)
                # print(week_size)
                percd_w=(weekavre[week_size-2]-weekavre[week_size-1])/weekavre[week_size-2]
                percd_m=(monthavr[month_size-2]-monthavr[month_size-1])/monthavr[month_size-1]
                if percd_m>0.2 and percd_w>0 and monthavr[month_size-2]>3:
                    yx_daima.append(jijinshuju[find_rand[0,j],0])
                    jiance = jiance + 1
                    print("找到第",jiance,"个基金代码为",jijinshuju[find_rand[0,j],0],
                          "的",jijinshuju[find_rand[0,j],1],"处于下降态势,月下降态势为:",percd_m,"周下降态势为:",percd_w)
    

    在使用时,只需调用该函数即可,运行效果如下:

    在这里插入图片描述

    所有函数代码

    from bs4 import BeautifulSoup                  #进行网页解析获取数据
    import re                                      #正则表达式,进行文字匹配
    import urllib.request,urllib.error             #制定URL。获取网页数据
    import xlwt                                    #进行excel操作
    import pandas as pd
    import numpy as np
    from matplotlib import pyplot as plt
    import random
    import xlrd
    
    '''基金数据爬取函数,主要参数输入基金代码,完成该基金数据获取'''
    def jijinspider(daima="160002"):
        #获取网页
        #daima=int(daima)
        url="https://danjuanapp.com/djapi/fund/nav/history/"#https://danjuanapp.com/djapi/fund/nav/history/004194?size=30&page=1
        guding="?size=30&page="
        header={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) "
                              "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
        date=[]
        value=[]
        percentage=[]
        url=url+daima+guding
        print("正在爬取基金数据代号:",daima)
        for i in range(1,31):
            urll=url+str(i)
            print(urll)
            req=urllib.request.Request(url=urll,headers=header)
            response=urllib.request.urlopen(req)
            html=response.read().decode("utf-8")
            date=date+re.findall(r'"date":"(.*?)"',html)
            value=value+re.findall(r'"value":"(.*?)"',html)
            percentage=percentage+re.findall(r'"percentage":"(.*?)"',html)
            #print(date)
        savepath="./"+daima+".xls"
        name=daima
        book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建workbook对象
        sheet = book.add_sheet(name,cell_overwrite_ok=True)  # 创建工作表
        col=("日期","百分比增减","净值")
        num= len(date)
        for i in range(0,3):
            sheet.write(0,i,col[i])  #列名
        for i in range(0,num):
            j=num-i
            #print("爬取", date[j-1])
            sheet.write(i+1,0,date[j-1])
            sheet.write(i+1,1,percentage[j-1])
            sheet.write(i+1,2,value[j-1])
        book.save(savepath)  # 保存数据表
        print("爬取成功!")
    
    
    '''基金周均值分析,主要参数为excel表格,返回周均值列表'''
    def weekavr(sheetpath):
        jijinshu=pd.read_excel(sheetpath,skiprows=1,usecols=[1,2])
        jijinshuju=np.array(jijinshu)
        #jijinshuju=np.loadtxt(sheetname,skiprows=1,usecols=[1,2],encoding='utf-8')
        #print(jijinshuju)
        shujusize=jijinshuju.shape
        #print(shujusize[0])
        weekavre=[]
        avrshu=0
        for i in range(0,shujusize[0]):
            if i%7!=6:
                avrshu=avrshu+jijinshuju[i,1]
            elif i==shujusize[0]-1 and i%7!=6:
                j=i%7
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu=avrshu/(j+1)
                weekavre.append(avrshu)
                avrshu=0
            else:
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu /7
                weekavre.append(avrshu)
                avrshu = 0
        #print(monthavr)
        return  weekavre
    
    '''这个函数主要用于画出基金几年时间段的数据变化趋势,主要参数为:周均值矩阵,基金数据excel表格'''
    def jijinplot(sheetname,weekavr):
        imagename=sheetname
        sheetname="./"+sheetname
        jijinshuju=pd.read_excel(sheetname)
        jijinshuju_now=np.array(jijinshuju)
        num=len(jijinshuju_now[:,1])
        plt.plot(jijinshuju_now[:,0],jijinshuju_now[:,2])
        plt.xticks(range(1,num,75), rotation=35)
        plt.title(imagename)
        plt.xlabel("time")
        plt.ylabel("value")
        num=len(weekavr)
        for i in range(0,num):
            xx=jijinshuju_now[7*i:7*i+7,0]
            xx=np.array(xx)
            #print(xx)
            yy=[weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i],weekavr[i]]
            plt.plot(xx,yy)
    
            #plt.xticks([])
        plt.show()
    
    '''月均值函数,这个函数主要返回基金每月均值,输入主要参数为基金存储表格路径'''
    def monthavr(sheetpath):
        jijinshu = pd.read_excel(sheetpath, skiprows=1, usecols=[1, 2])
        jijinshuju = np.array(jijinshu)
        # jijinshuju=np.loadtxt(sheetname,skiprows=1,usecols=[1,2],encoding='utf-8')
        # print(jijinshuju)
        shujusize = jijinshuju.shape
        # print(shujusize[0])
        monthavr = []
        avrshu = 0
        for i in range(0, shujusize[0]):
            if i % 30 != 29:
                avrshu = avrshu + jijinshuju[i, 1]
            elif i == shujusize[0] - 1 and i % 30 != 29:
                j = i % 30
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu / (j + 1)
                monthavr.append(avrshu)
                avrshu = 0
            else:
                avrshu = avrshu + jijinshuju[i, 1]
                avrshu = avrshu / 30
                monthavr.append(avrshu)
                avrshu = 0
        # print(monthavr)
        return monthavr
    # sheetname="004194.xls"
    # weekshuju=monthavr(sheetname)
    # print(weekshuju)
    # jijinspider("004194")
    # sheetname="004194.xls"
    # weekshuju=weekavr(sheetname)
    # #print(weekshuju)
    # jijinplot("004194.xls",weekshuju)
    
    '''月周期基金代理分析,这个函数主要对基金数据每月数据变化进行分析,以求找到买入与卖出基金的合适时间'''
    #def T_jijin(sheetname):
    
    
    
    '''下降基金代号获取函数,当前处于降低时期的基金,主要针对当前月均值,与周均值处于下降阶段,找到5个后停止,返回基金代号'''
    def find_decend():
        # 获取网页
        url = "https://danjuanapp.com/djapi/fund/nav/history/"  # https://danjuanapp.com/djapi/fund/nav/history/004194?size=30&page=1
        guding = "?size=30&page="
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                                "Chrome/86.0.4240.198 Safari/537.36"}
        sheetpath = "./基金代码.xlsx"
        jijinshu = pd.read_excel(sheetpath,dtype=str)
        # jijinshu.info()
        jijinshuju = np.array(jijinshu)
        strr = jijinshuju[0, 0].zfill(6)
        jijinshuju[0, 0] = strr
        for i in range(0, 4178):
            strr = jijinshuju[i, 0].zfill(6)
            jijinshuju[i, 0] = strr
        date = []
        value = []
        percentage = []
        yx_daima=[]
        daima=""
        jiance=0
    
        while (jiance<5) :
            find_rand = np.random.randint(1000, 4179, (1, 100))
            for j in range(0,100):
                daima = jijinshuju[find_rand[0,j],0]
                # print(daima)
                url0 = url + daima + guding
                print("正在随机验证基金代码:", jijinshuju[find_rand[0,j],0])
                for i in range(1, 10):
                    urll = url0 + str(i)
                    #print(urll)
                    req = urllib.request.Request(url=urll, headers=header)
                    html = ""
                    response = urllib.request.urlopen(req)
                    html = response.read().decode("utf-8")
                    #date = date + re.findall(r'"date":"(.*?)"', html)
                    value = value + re.findall(r'"value":"(.*?)"', html)
                    percentage = percentage + re.findall(r'"percentage":"(.*?)"', html)
                    # print(date)
                #date=np.array(date)
                #value=np.array(value,dtype=float)
                #percentage=np.array(percentage)
                shujusize = len(value)
                if shujusize<100:
                    break
                # print(value)
                value_wk=[]
                for float_i in value:
                     value_wk.append(float(float_i))
                # print("shujusize:",shujusize)
                # print(shujusize)
                monthavr = []
                avrshu = 0.00
                for i in range(0, shujusize):
                    if i % 30 != 29:
                        avrshu = avrshu + value_wk[i]
                    elif i == shujusize - 1 and i % 30 != 29:
                        j = i % 30
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / (j + 1)
                        monthavr.append(avrshu)
                        avrshu = 0
                    else:
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / 30
                        monthavr.append(avrshu)
                        avrshu = 0
                weekavre = []
                avrshu = 0
                for i in range(0, shujusize):
                    if i % 7 != 6:
                        avrshu = avrshu + value_wk[i]
                    elif i == shujusize - 1 and i % 7 != 6:
                        j = i % 7
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / (j + 1)
                        weekavre.append(avrshu)
                        #print(avrshu)
                        avrshu = 0
                    else:
                        avrshu = avrshu + value_wk[i]
                        avrshu = avrshu / 7
                        #print(avrshu)
                        weekavre.append(avrshu)
                        avrshu = 0
                # weekavre=np.array(weekavre)
                # monthavr=np.array(monthavr)
                week_size=len(weekavre)
                month_size=len(monthavr)
                # print(weekavre)
                # print(week_size)
                percd_w=(weekavre[week_size-2]-weekavre[week_size-1])/weekavre[week_size-2]
                percd_m=(monthavr[month_size-2]-monthavr[month_size-1])/monthavr[month_size-1]
                if percd_m>0.1 and percd_w>0 and monthavr[month_size-2]>3:
                    yx_daima.append(jijinshuju[find_rand[0,j],0])
                    jiance = jiance + 1
                    print("找到第",jiance,"个基金代码为",jijinshuju[find_rand[0,j],0],
                          "的",jijinshuju[find_rand[0,j],1],"处于下降态势,月下降态势为:",percd_m,"周下降态势为:",percd_w)
    
    展开全文
  • 网络爬虫是一个自动提取网页的程序,它为搜索 引擎从万维网上下载网页,是搜索引擎的重要组 成。传统爬虫从一个或若干初始网页的URL开始, 获得初始网页上的URL,在抓取网页的过程中, 不断从当前页面上抽取新的URL...
  • 数据分析】⚠️走进数据分析 2⚠️ 爬虫简介.

    【数据分析】⚠️走进数据分析 2⚠️ 爬虫简介

    概述

    数据分析 (Data Analyze) 可以在工作中的各个方面帮助我们. 本专栏为量化交易专栏下的子专栏, 主要讲解一些数据分析的基础知识.

    在这里插入图片描述

    爬虫

    爬虫 (Web Crawler) 是一个自动提取网页的程序. 可以自动化浏览网络中的信息, 对信息进行自动化检索.

    在这里插入图片描述

    爬取网页

    urlopen()可以帮助我们打开一个远程的 url 链接, 并向这个链接发出请求, 获取响应结果. 返回的是一个 http 响应对象, 记录了本次 http 访问的响应头和响应体.

    格式:

    urllib.request.urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
                *, cafile=None, capath=None, cadefault=False, context=None):
    

    例子:

    import urllib.request
    
    # 网页
    url = "https://iamarookie.blog.csdn.net/"
    
    # 发送请求
    response = urllib.request.urlopen(url)
    
    # 如果请求成功
    if response.getcode() == 200:
        
        # 打印信息
        print(response.read().decode("utf-8"))
    

    输出结果:

    C:\Users\Windows\Anaconda3\pythonw.exe C:/Users/Windows/Desktop/爬虫/爬取网页.py
    <!doctype html><html lang="zh" data-server-rendered="true" data-v-52866abc><head><title>我是小白呀的博客_CSDN博客-Python 基础,我要偷偷学 Java, 然后惊呆所有人,Python 机器学习基础领域博主</title> <meta name="keywords" content=""> <meta name="description" content="我是小白呀擅长Python 基础,我要偷偷学 Java, 然后惊呆所有人,Python 机器学习基础,等方面的知识,我是小白呀关注Python,深度学习领域."> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <meta name="referrer" content="always"> <meta http-equiv="Cache-Control" content="no-siteapp"> <!----> <meta name="applicable-device" content="pc"> <!----> <!----> <!----> 
            <script src="https://g.csdnimg.cn/tingyun/1.8.5/user.js"></script>
           <link rel="shortcut icon" href="https://g.csdnimg.cn/static/logo/favicon32.ico" type="image/x-icon"> <link rel="canonical" href="https://blog.csdn.net/weixin_46274168"> <!----> 
              <meta name="toolbar" content={"type":"0"} />
           
              <meta name="report" content={"spm":"1001.2014"} />
           <script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js,user-tooltip/2.2/user-tooltip.js,lib/qrcode/1.0.0/qrcode.min.js"></script> <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script> <!----> <!----> 
              <script src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js"></script>
           <!----> <!----> <!----> <!----><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/common.385ac72a.css"><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/tpl/user-profile/index.e7721f4e.css"></head> <body><div id="app"><div><div class="main"><div class="page-container page-component"><div data-v-52866abc><div class="home_wrap" data-v-52866abc><div id="floor-user-profile_485" class="grey-bg" data-v-c9883966 data-v-52866abc><div comp-data="[object Object]" floor-data="[object Object]" data-v-80922f46 data-v-c9883966><div class="user-profile-head" data-v-d1dbb6f8 data-v-80922f46><div class="user-profile-head-banner" style="background-image:url(https://img-home.csdnimg.cn/images/20210120054229.jpg);" data-v-d1dbb6f8><div class="user-profile-wrapper" data-v-d1dbb6f8><h1 class="user-profile-title" style="color:#fff;" data-v-d1dbb6f8>我是小白呀的博客</h1> <div class="user-profile-sub-title" style="color:#fff;" data-v-d1dbb6f8>因为啥也不会, 默默做一只小白</div></div></div> <div class="user-profile-head-info user-profile-wrapper" data-v-d1dbb6f8><div class="user-profile-head-info-t clearfix" data-v-d1dbb6f8><!----> <div class="user-profile-avatar" data-v-d1dbb6f8><img src="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" alt data-v-d1dbb6f8> <i class="user-gender-female" data-v-d1dbb6f8></i></div> <div class="user-profile-operate-btn" data-v-d1dbb6f8><a href="https://ask.csdn.net/new?expertName=weixin_46274168" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.6223&quot;}" data-report-query="spm=3001.6223" class="user-profile-black-btn" data-v-d1dbb6f8>提问</a> <a href="https://im.csdn.net/im/main.html?userName=weixin_46274168" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5471&quot;}" data-report-query="spm=3001.5471" class="user-profile-black-btn" data-v-d1dbb6f8>私信</a> <a href="javascript:;" data-report-click="{&quot;spm&quot;:&quot;3001.5472&quot;}" class="user-profile-red-btn" data-v-d1dbb6f8>关注</a> <!----></div></div> <div class="user-profile-head-info-m" data-v-d1dbb6f8><div class="user-profile-head-name" data-v-d1dbb6f8><div data-v-d1dbb6f8>我是小白呀</div> <div title="已加入 CSDN 2年" class="person-code-age" style="background-color:#D1DDF1;color:#455165;" data-v-d1dbb6f8><img src="https://img-home.csdnimg.cn/images/20210108035944.gif" alt data-v-d1dbb6f8> <span data-v-d1dbb6f8>码龄2年</span></div> <div class="user-profile-icon" data-v-d1dbb6f8><a href="https://blog.csdn.net/blogdevteam/article/details/103478461" target="_blank" data-v-d1dbb6f8><img src="https://csdnimg.cn/identity/blog8.png" alt title="博客等级" data-v-d1dbb6f8></a> <a href="https://www.csdn.net/vip" target="_blank" data-v-d1dbb6f8><img src="https://csdnimg.cn/release/cmsfe/public/img/icon-vip.78dceba1.png" alt data-v-d1dbb6f8></a> <a href="https://i.csdn.net/#/user-center/auth" target="_blank" data-v-d1dbb6f8><!----></a> <a href="https://i.csdn.net/#/user-center/auth" target="_blank" data-v-d1dbb6f8><!----></a></div></div> <div class="user-profile-head-introduction" data-v-d1dbb6f8><p data-v-d1dbb6f8>
              吾本布衣, 出自纽约, 四周大山. 箪瓢屡空, 环堵萧然, 不弊风日. 吾好读书, 滴水石穿, 笨鸟先飞, 求知不断, 方能立足. 不羡孔北海之座上客常满, 但求吾辈架上书常在. 涸辙遗鲋, 暮成枯, 人而无志, 与彼何殊. Self-study Computer Science. 愿为 open source 自效微力. 天高地阔,欲往观之. 
    
    因为啥也不会, 默默做一只小白
            </p> <!----></div></div> <div class="user-profile-head-info-b" data-v-d1dbb6f8><ul data-v-d1dbb6f8><li data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>657,157</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>被访问量</div></li> <li data-v-d1dbb6f8><a href="javascript:;" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>611</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>原创文章</div></a></li> <li data-v-d1dbb6f8><a href="https://blog.csdn.net/rank/list/total" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5476&quot;}" data-report-query="spm=3001.5476" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>242</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>作者排名</div></a></li> <li data-v-d1dbb6f8><a href="javascript:;" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>48,734</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>粉丝数量</div></a></li></ul></div></div></div> <div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46><div class="user-profile-body-inner" data-v-3f0fdf46><div class="user-profile-body-left" data-v-3f0fdf46><div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46><div class="user-general-info single-general-info" data-v-d487ed78><ul data-v-d487ed78><!----> <!----> <li class="user-general-info-join-csdn" data-v-d487ed78><i data-v-d487ed78></i> <span data-v-d487ed78>于</span> <span class="user-general-info-key-word" data-v-d487ed78>2020-02-05</span> <span data-v-d487ed78>加入CSDN</span></li></ul></div> <div class="user-influence-list" data-v-d487ed78><ul data-v-d487ed78><li style="background-image:url(https://img-home.csdnimg.cn/images/20210914024133.png);" data-v-d487ed78><a href="https://blog.csdn.net/SoftwareTeacher/article/details/114499372" target="_blank" data-report-click='{"spm":"1001.2014.3001.6421"}'
              data-report-query="spm=1001.2014.3001.6421">
              <img class="influence-img" src="https://img-home.csdnimg.cn/images/20210820111918.png" alt="">
              <span>6,251</span>分
              <img class="influence-icon" src="https://img-home.csdnimg.cn/images/20210809030232.png" alt=""></a></li></ul></div> <div class="user-achievement user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>获得成就</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210412060958.png)"></i>
            <div>Python领域优质创作者</div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022826.png)"></i>
            <div>博客专家认证</div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)"></i>
            <div>获得<span>3,434</span>次点赞</div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)"></i>
            <div>内容获得<span>4,116</span>次评论</div>
          </li><li data-v-d487ed78>
            <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)"></i>
            <div>获得<span>4,381</span>次收藏</div>
          </li></ul></div></div></div> <!----> <div class="user-profile-medal user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>荣誉勋章</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/blinknewcomer@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/linkedin@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/qiandao200@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/yuedu90@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/chizhiyiheng@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/1024@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/qixiebiaobing4@240.png" alt data-v-d487ed78></li><li data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="csdn-user-medal-btn" data-v-d487ed78><img src="https://csdnimg.cn/medal/fenxiangdaren@240.png" alt data-v-d487ed78></li></ul></div> <button data-nickname="我是小白呀" data-username="weixin_46274168" data-avatar="https://profile.csdnimg.cn/4/5/4/1_weixin_46274168" data-report-click="{&quot;spm&quot;:&quot;3001.5481&quot;}" class="aside-common-box-bottom-btn csdn-user-medal-btn" data-v-d487ed78>所有勋章<i class="el-icon-arrow-right" data-v-d487ed78></i></button></div></div> <div class="user-interest-area user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>兴趣领域</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content aside-box-fold" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78><div class="interest-area-main" data-v-d487ed78><div class="interest-area-name" data-v-d487ed78>#人工智能</div> <!----></div> <div class="interest-area-sub" data-v-d487ed78><span data-v-d487ed78>#深度学习</span><span data-v-d487ed78>#Python</span></div></li></ul></div> <!----></div></div> <div class="user-special-column user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>TA的专栏</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content aside-box-fold" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11391177.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="深度学习" data-v-d487ed78>深度学习</span> <!----></a> <!----></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10858635.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="NLP 自然语言处理" data-v-d487ed78>NLP 自然语言处理</span> <!----></a> <div class="special-column-num" data-v-d487ed78>10篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11391178.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="强化学习" data-v-d487ed78>强化学习</span> <!----></a> <div class="special-column-num" data-v-d487ed78>3篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11175035.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="视觉" data-v-d487ed78>视觉</span> <!----></a> <div class="special-column-num" data-v-d487ed78>37篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11218743.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="OpenCV" data-v-d487ed78>OpenCV</span> <!----></a> <div class="special-column-num" data-v-d487ed78>29篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11175036.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Yolo" data-v-d487ed78>Yolo</span> <!----></a> <div class="special-column-num" data-v-d487ed78>3篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11205330.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="万物皆可 GAN" data-v-d487ed78>万物皆可 GAN</span> <!----></a> <div class="special-column-num" data-v-d487ed78>4篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10882821.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="我要拿 Python 炒股票, 然后惊呆所有人!" data-v-d487ed78>我要拿 Python 炒股票, 然后惊呆所有人!</span> <!----></a> <div class="special-column-num" data-v-d487ed78>21篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11416563.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="数据分析" data-v-d487ed78>数据分析</span> <!----></a> <div class="special-column-num" data-v-d487ed78>1篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10961128.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="基础内容" data-v-d487ed78>基础内容</span> <!----></a> <div class="special-column-num" data-v-d487ed78>16篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10967506.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="实战讲解" data-v-d487ed78>实战讲解</span> <!----></a> <div class="special-column-num" data-v-d487ed78>13篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10818541.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="手把手带你玩转深度学习框架" data-v-d487ed78>手把手带你玩转深度学习框架</span> <!----></a> <div class="special-column-num" data-v-d487ed78>31篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10818542.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Tensorflow1 入门" data-v-d487ed78>Tensorflow1 入门</span> <!----></a> <div class="special-column-num" data-v-d487ed78>3篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11106655.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Tensorflow2 入门" data-v-d487ed78>Tensorflow2 入门</span> <!----></a> <div class="special-column-num" data-v-d487ed78>16篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10836741.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="PyTorch 入门" data-v-d487ed78>PyTorch 入门</span> <!----></a> <div class="special-column-num" data-v-d487ed78>13篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10621044.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Pyhton 机器学习进阶" data-v-d487ed78>Pyhton 机器学习进阶</span> <!----></a> <div class="special-column-num" data-v-d487ed78>32篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10638713.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 机器学习进阶第一节" data-v-d487ed78>Python 机器学习进阶第一节</span> <!----></a> <div class="special-column-num" data-v-d487ed78>17篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10638714.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 机器学习进阶第二节" data-v-d487ed78>Python 机器学习进阶第二节</span> <!----></a> <div class="special-column-num" data-v-d487ed78>11篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10639190.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 机器学习总结" data-v-d487ed78>Python 机器学习总结</span> <!----></a> <div class="special-column-num" data-v-d487ed78>4篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11267655.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Go 基础" data-v-d487ed78>Go 基础</span> <!----></a> <div class="special-column-num" data-v-d487ed78>27篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_11030176.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/2021050200451433.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="C++ 基础" data-v-d487ed78>C++ 基础</span> <!----></a> <div class="special-column-num" data-v-d487ed78>34篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10593707.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="我要偷偷学 Java, 然后惊呆所有人" data-v-d487ed78>我要偷偷学 Java, 然后惊呆所有人</span> <!----></a> <div class="special-column-num" data-v-d487ed78>122篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10531430.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 机器学习基础" data-v-d487ed78>Python 机器学习基础</span> <!----></a> <div class="special-column-num" data-v-d487ed78>62篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10490332.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 数据结构" data-v-d487ed78>Python 数据结构</span> <!----></a> <div class="special-column-num" data-v-d487ed78>41篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10442519.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 基础" data-v-d487ed78>Python 基础</span> <!----></a> <div class="special-column-num" data-v-d487ed78>133篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10443383.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 基础第三节" data-v-d487ed78>Python 基础第三节</span> <!----></a> <div class="special-column-num" data-v-d487ed78>13篇</div></li><li class="second-column" data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10443384.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="Python 基础第四节" data-v-d487ed78>Python 基础第四节</span> <!----></a> <div class="special-column-num" data-v-d487ed78>13篇</div></li><li data-v-d487ed78><a href="https://blog.csdn.net/weixin_46274168/category_10524260.html" target="_blank" data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" data-report-query="spm=3001.5482" class="special-column-name" data-v-d487ed78><img src="https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt data-v-d487ed78> <span title="易语言 数据结构" data-v-d487ed78>易语言 数据结构</span> <!----></a> <div class="special-column-num" data-v-d487ed78>4篇</div></li></ul></div> <button data-report-click="{&quot;spm&quot;:&quot;3001.5482&quot;}" class="aside-common-box-bottom-btn" data-v-d487ed78>展开<i class="el-icon-arrow-down" data-v-d487ed78></i></button></div></div> <div class="user-custom-module user-profile-aside-common-box" data-v-d487ed78><div title="学无止境" class="aside-common-box-head" data-v-d487ed78>学无止境</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><center> 
    ... ...
    ... ...
    

    设置超时时间

    通过 urlopen 方法发出的请求, 如果长时间没得到响应, 我们应终止该请求. 如果再继续维持, 不仅会继续耗费本地客户端和对方服务器的资源, 更会让用户长时间得不到响应, 从而降低用户体验. 用 urlopen 方法时, 我们可以加入 timeout 参数来指定超时时间, 单位为秒.

    例子:

    import urllib.request
    
    # 网页
    url = "https://iamarookie.blog.csdn.net/"
    
    # 发送请求
    response = urllib.request.urlopen(url, timeout=10)
    
    # 如果请求成功
    if response.getcode() == 200:
    
        # 打印信息
        print(response.read().decode("utf-8"))
    

    处理网络异常

    URLError可以帮助我们处理网络异常.

    例子:

    from urllib import request, error
    
    # 网页
    url = "https://iamarookie.blog.csdn.net/"
    
    # 发送请求
    try:
        response = request.urlopen(url, timeout=10)
    except error.URLError as e:
        # 打印错误
        print(e.reason)
    
        # 退出
        exit(1)
    
    # 如果请求成功
    if response.getcode() == 200:
    
        # 打印信息
        print(response.read().decode("utf-8"))
    
    展开全文
  • Python爬虫以及数据可视化分析

    万次阅读 多人点赞 2020-12-25 17:43:30
    Python爬虫以及数据可视化分析之B站动漫排行榜信息爬取分析 简书地址:https://www.jianshu.com/u/40ac87350697 简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析 源码文件可以参考Github上传的...
  • python爬虫、分布式爬虫简单的几段总结。
  • 本篇博客记录自己学习python爬虫与数据分析的一点收获,做的一个实例,仅供学习参考。爬虫使用需规范,请大家在用爬虫前注意网站相关协议(robots协议)。 二、简介 博主在学了爬虫后,总是摩拳擦掌、跃跃欲试,想...
  • 设计网络爬虫获取相关的观影数据分析电影制作的导演、国家,电影出品的年份(上映时间),电影的类别、语言、简介、影评词等, 实现对大众电影喜好的线上调查,并将相关数据可视化成柱状图、饼状图来进行云展示。...
  • 针对网络中的海量数据采用Scrapy框架设计网络爬虫数据进行提取,首先分介绍了如何在Python下安装调用Scrapy框架并建立相应爬虫项目,然后对目标网站的页面源码的结构进行分析,从标签中定位需要获取的数据,并依此...
  • Python 网络爬虫与数据采集(一)

    万次阅读 多人点赞 2022-01-30 20:38:44
    Python 网络爬虫与数据采集第1章 序章 网络爬虫基础1 爬虫基本概述1.1 爬虫是什么1.2 爬虫可以做什么1.3 爬虫的分类1.4 爬虫的基本流程1.4.1 浏览网页的流程1.4.2 爬虫的基本流程1.5 爬虫反爬虫1.5.1 爬虫的攻防...
  • 网络爬虫, Python和数据分析 中国科技大学 \h n 什么是网络爬虫 网络爬虫是一个自动提取网页的程序它为搜索引擎从万维网上下载网页是搜索引擎的重要组成传统爬虫从一个或若干初始网页的URL开始 获得初始网页上的URL...
  • 下面简单介绍下网络爬虫、自动化、数据分析与可视化、WEB开发、机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能吧。1、网络爬虫•requests-对HTTP协议进行高度封装,支持非常丰富的链接...
  • 雪中悍刀行兄弟们都看过了吗?感觉看了个寂寞,但又感觉还行,原谅我没看过原著小说~ 豆瓣评分5.8,说明我还是没说错它的。...我们今天就来采集一下它的弹幕,实现数据可视化,看看弹幕文化都输出了什么~
  • 本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助。 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步加载、验证码、...
  • 而 Scrapy 还提供了自己的数据提取方法,即 Selector(选择器)。Selector 是基于 lxml 来构建的,支持 XPath 选择器、CSS 选择器以及正则表达式,功能全面,解析速度和准确度非常高。 很多人学习python,不知道从...
  • python网络爬虫与信息提取

    千次阅读 2021-07-27 01:52:31
    python网络爬虫与信息提取 学习视频链接: https://www.icourse163.org/learn/BIT-1001870001?tid=1464881473#/learn/announce 知识点: 工具: 一、网络爬虫之规则 1.requests库入门 安装requests库 request库的7...
  • Python网络爬虫数据解析篇
  • Python 网络爬虫数据可视化

    千次阅读 多人点赞 2021-01-11 18:47:13
    1.2 网络爬虫 2 1.3 数据可视化 2 1.4 Python环境介绍 2 1.4.1 简介 2 1.4.2 特点 3 1.5 扩展库介绍 3 1.5.1 安装模块 3 1.5.2 主要模块介绍 3 ① pandas模块 3 ② requests模块 4 ③ bs4模块 4 ④ selenium模块 4 ...
  • Python 爬虫数据分析实战

    万次阅读 多人点赞 2018-04-12 10:41:43
    本课程是 Python 爬虫数据分析项目实战课程,主要分 3 部分: 第 1 部分是 Python 爬虫,主要使用 Urllib 3 和 BeautifulSoup 抓取天猫商城和京东商城胸罩销售数据,并保存到 SQLite 数据库中; 第 2 部分是对...
  • 实战一:中国大学排名 前言 由于上一篇文章中教会了大家如何存储数据,但是由于篇幅过大,就没有加入实战篇。想必大家也等着急了吧,所以今天...需求分析与功能实现 爬取的网址如下: https://www.shanghairanking
  • 嵩天老师课件,网络爬虫。python项目爬虫实战项目分析的合集。
  • 基于音悦台网站榜单的数据爬取与分析 本实验代码:进入 一、研究背景 在互联网发展初期,网站相对较少,信息查找比较容易。然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足...
  • 自己写的一篇网络爬虫分析及主题式网络爬虫研究综述文章,主要讨论了各类爬虫的种类和优缺点,重点讨论了主题式网络爬虫的工作机理。字数为3891
  • XSS漏洞是攻击Web应用程序...针对这种情况,对AJAX技术下XSS漏洞的特点进行了分析,提出了一种基于网络爬虫与页面代码行为的动态检测方法。实验结果表明,提出的方法在节省人力、时间成本漏洞检测方面有较好的表现。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,382
精华内容 9,352
关键字:

网络爬虫的数据提取与分析