Python爬取企业会计准则解读暨docx库入门

为了便于广大会计人员学习会计准则,加深对企业会计准则内容的理解,会计准则委员会收集了实务中反映的企业会计准则相关问题,组织企业会计准则咨询委员开展研究,就相关问题进行了解答,并在会计准则委员会网站发布,供广大会计人员学习参考。今天,我们就来爬取企业会计准则解读吧。

网址:

https://www.casc.org.cn/qykjzzjd/

image

步骤拆解:

1、观察网页

2、请求数据

3、解析数据

4、保存数据——docx库入门

第一步 观察网页

1、谷歌浏览器右键“检查”,点击“Network”,刷新页面。

2、点击最上面名为“qykjzzjd/”的链接,

3、点击“Response”,发现我们需要的数据在这里。

image

第二步 请求数据

我们使用requests库请求数据,查看“Headers”发现请求方法为get请求。

image

于是我们输入如下代码,先看看有没有请求成功,我们发现请求结果是<Response[200]>,数字是200说明请求成功,数字不是200说明请求失败。

image

我们再来看看我们请求的结果是什么,我们输入r.text,发现返回值是乱码。

image

这是什么原因呢?

想象一个场景,假设你完全不懂英语,一个人对你说“Good night”,你是不是会把这句话解析成“姑奶奶”(这是武林外传小贝穿越的场景),这就是驴头不对马嘴了,用中文解析英文固然如此。现实世界有不同的语言,计算机世界也有不同的语言,我们叫它为编码方式,常见编码方式有:ASCII编码、GBK编码、UTF-8编码。

我们采用reqeusts库请求数据的时候,默认encoding是ISO-8859-1。但我们在查看“Response”,在<head>标签中的<meta>标签中,有一个“charset=’utf-8’”,即网站的编码方式是utf-8。我们用ISO-8859-1解码utf-8,肯定会出现乱码。

image
image

apparent_encoding会从网页的内容中分析网页编码的方式,当网页出现乱码时可以把apparent_encoding的编码格式赋值给encoding。此时我们再看r.text,发现没有乱码了。

image

代码如下:

import requests
from bs4 import BeautifulSoup
from docx import Document
#1、请求数据
url='https://www.casc.org.cn/qykjzzjd/'
r=requests.get(url)
r.encoding=r.apparent_encoding

第三步 解析数据

我们采用BeautifulSoup库来解析数据。

通过检查网页,我们发现所有企业会计准则解读存储在class="newsConclearfix"的<div>标签下,每行企业会计准则解读存储在上述标签的’li’标签下,在该标签下我们可获取子链接。

image

获取子链接后,如下图所示,我们发现企业会计准则解读的具体信息存储子链接的class="pageInfo"的<div>标签下,其中标题存储在<h1>标签中,标题下的备注存储在class="pageInfoLittle"的<div>标签中,正文段落存储在class="infoCon"的<div>标签中。

image

代码如下:

#2、解析数据
soup=BeautifulSoup(r.text,'html.parser')
doc=Document()
for li in soup.find('div',class_="newsCon clearfix").find_all('li'):
    url2='https:'+li.find('a').get('href')#获取子页面网址
    r2=requests.get(url2)#请求子页面数据
    r2.encoding=r2.apparent_encoding
    soup2=BeautifulSoup(r2.text,'html.parser')#解析子页面数据
    content=soup2.find('div',class_="pageInfo")#获取子页面数据
    title=content.h1.text#获取子页面标题
    info=content.find('div',class_="pageInfoLittle").text#获取子页面标题下备注
    paragraph=content.find('div',class_="infoCon").text#获取子页面正文

第四步 存储数据

我们想把网页内容存储成文档,这就需要docx库。

1、docx库的安装

错误方法(不要尝试,不要尝试,不要尝试!)

这是我踩过的坑。

通过Anaconda的Anaconda Prompt命令窗口安装docx,输入一下指令:

pip install docx

命令窗口显示成功后,在开发环境中输入import docx测试三方库有没有成功,显示

Import Error: No module named 'exceptions'

原因是通过命令行下载的docx安装包还没有完全兼容python3,因此需要自己找一个兼容的包进行安装。

正确方法

(1)下载docx库的whl文件。

下载地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

image

在以上网址中点击

python_docx‑0.8.10‑py2.py3‑none‑any.whl进行下载

image

(2)安装docx库

打开Anaconda Prompt,选择开始菜单-Anaconda3-Anaconda Prompt。

在命令行中输入:pip install whl文件路径+whl文件名称。

以本电脑为例,下载的docx库的whl文件存放在C:\Users\mi\Downloads文件夹中,因此在命令行中输入:

pip install C:\Users\mi\Downloads\python_docx-0.8.10-py2.py3-none-any.whl
image
image
image

2、docx库的使用——以企业会计准则解读的保存为例

(1)引入docx库

from docx import Document

(2)创建文档对象

doc=Document()

(3)文档编辑

doc.add_heading(title)#添加标题
doc.add_paragraph(info)#添加段落
doc.add_paragraph(paragraph)#添加段落

(4)文档保存

doc.save('企业会计准则解读.docx')#保存文档

全套代码:


import requests
from bs4 import BeautifulSoup
from docx import Document
#1、请求数据
url='https://www.casc.org.cn/qykjzzjd/'
r=requests.get(url)
r.encoding=r.apparent_encoding
#2、解析数据
soup=BeautifulSoup(r.text,'html.parser')
doc=Document()
for li in soup.find('div',class_="newsCon clearfix").find_all('li'):
    url2='https:'+li.find('a').get('href')#获取子页面网址
    r2=requests.get(url2)#请求子页面数据
    r2.encoding=r2.apparent_encoding
    soup2=BeautifulSoup(r2.text,'html.parser')#解析子页面数据
    content=soup2.find('div',class_="pageInfo")#获取子页面数据
    title=content.h1.text#获取子页面标题
    info=content.find('div',class_="pageInfoLittle").text#获取子页面标题下备注
    paragraph=content.find('div',class_="infoCon").text#获取子页面正文
#3、保存数据
    doc.add_heading(title) #添加标题
    doc.add_paragraph(info) #添加段落
    doc.add_paragraph(paragraph) #添加段落
doc.save('企业会计准则解读.docx') #保存文档
**结果如下:**

![image](https://upload-images.jianshu.io/upload_images/27224266-a478d5fdd60b16e9?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容