conybcc的博客

金融/证券/会计/公司治理等方向的编程课程

<跟着小邢老师学python> 第二课 安装python环境 深入了解爬虫

查看B站视频

windows下安装python环境

下载

首先打开python的官网windows版本下载页面 https://www.python.org/downloads/windows/

进入Latest Python 3 Release

下载页面最后的 Files 列表中的 Windows x86-64 executable installer

安装

进行安装时, 注意把所有选项都勾上, 尤其是 Add Python to PATH

这样默认也会安装上pip, 方便我们进行包管理

测试

安装完成后, 运行cmd 或者 powershell 进入命令行

输入 python , 如果看到Python的版本介绍, 如 Python 3.7.1 ..... 说明安装成功

也可以打开 IDLE (官方编辑器)

输入 print('hello world') 然后回车, 测试是否可以打印输出成功

至此, 安装完成

深入了解爬虫

爬虫其实就是让电脑程序替代人去访问并获取数据, 整理成需要的格式后记录下来

最重要的一步其实不是程序, 而是从网站上发现数据的过程

接下来就以上交所的年报为例, 一步一步分析数据的来源, 也为我们后面写爬虫抓取年报数据做准备

正常浏览

以人的行为去查看年报的流程如下

浏览器行为

我们进行的一系列操作其实也是借助浏览器, 向上交所的服务器发起了请求, 服务器给出了响应, 然后浏览器显示给我们看

我们需要把这里面的细节了解清楚, 尤其涉及到请求与响应的细节

从浏览器角度来解释数据为什么呈现出来

详细查看一下这次网络行为的请求与响应部分

请求部分

响应部分

先看一下示例(我已经精简掉了很多重复数据, 并且去掉了外层的jsonCallback)

{
    "actionErrors": [],
    "actionMessages": [],
    "beginDate": "2018-04-01",
    "endDate": "2018-04-30",
    "errorMessages": [],
    "errors": {},
    "fieldErrors": {},
    "isPagination": "true",
    "issueHomeFlag": null,
    "jsonCallBack": "jsonpCallback4363",
    "keyWord": "",
    "locale": "zh_CN",
    "pageHelp": {
        "beginPage": 1,
        "cacheSize": 1,
        "data": ['这里有很多数据, 与result里重复了, 请留意']
        "endDate": null,
        "endPage": 5,
        "objectResult": null,
        "pageCount": 1283,
        "pageNo": 1,
        "pageSize": 25,
        "searchDate": null,
        "sort": null,
        "startDate": null,
        "total": 32069
    },
    "productId": "",
    "reportType": "ALL",
    "reportType2": "",
    "result": [
        {
            "INDEXCLASS": null,
            "PLAN_Date": null,
            "PLAN_Year": null,
            "ROWNUM": null,
            "ROWNUM_": null,
            "SSEDate": "2018-04-28",
            "SSETime": null,
            "SSETimeStr": null,
            "URL": "/disclosure/listedinfo/announcement/c/2018-04-28/600000_20180428_11.pdf",
            "author": null,
            "book_Name": null,
            "bulletinHeading": null,
            "bulletinType": null,
            "bulletin_No": null,
            "bulletin_Type": "其它",
            "bulletin_Year": "2018",
            "category_A": null,
            "category_B": null,
            "category_C": null,
            "category_D": null,
            "chapter_No": null,
            "companyAbbr": null,
            "dispatch_Organ": null,
            "file_Serial": null,
            "finish_Time": null,
            "initial_Date": null,
            "isChangeFlag": null,
            "journal_Issue": null,
            "journal_Name": null,
            "journal_Section": null,
            "journal_Year": null,
            "keyWord": null,
            "key_Word": null,
            "language": null,
            "lemma_CN": null,
            "lemma_EN": null,
            "publishing_Comp": null,
            "question": null,
            "question_Class": null,
            "read_Status": null,
            "save_Time": null,
            "section": null,
            "security_Code": "600000",
            "source": null,
            "spareVolEnd": null,
            "title": "浦发银行:2017年度财务报表及审计报告",
            "title_ETC": null,
            "title_PY": null,
            "unit_Code": null,
            "unit_Type": null
        },
        "result里面有25条数据, 为了方便起见, 其他都省略掉了"
    ],
    "texts": null,
    "type": "",
    "validateCode": ""
}

以上信息, 不论是请求部分还是响应部分, 都需要我们进行多次测试, 才能弄明白每一项或者重要的参数意义, 其实这一点也是一个爬虫最关键的, 决定了爬虫的正确性

我们点击下一页, Network窗口里又出现一条新的网络请求, 里面的pageHelp.pageNo: 2页码发生了改变, 自然返回的数据也就是第二页的了

点击列表中的某一条年报, 在弹出的窗口下方, 有一个 点击下载的按钮, 我们试一下, 发现可以下载年报

在这个按钮上按右键, 检查, 来分析一下下载的链接

我们看到了html结构, 如下

<a href="http://static.sse.com.cn/disclosure/listedinfo/announcement/c/2018-11-09/603650_20181109_1.pdf" download="" class="btn btn-primary pdfdownloadlink">
  点击下载
</a>

至此, 我们完成了对上交所年报的基本分析, 下一节课会讲解怎么一步一步开发爬虫程序, 抓取上交所的年报

最后

我近期一边整理免费课程,也会推出更多的免费视频,方便大家结合查看学习

如果你对我的课程感兴趣,欢迎与我联系,提供一对一教学,也可以帮助实现特定程序

了解清楚目标后,第一次可以先听课后付款

如果有概念没有理解清楚,随时可以询问,不再收费

回到首页查看更多课程

我的联系方式

点击评论(需要登录github账号) 评论完成后,回博客刷新