$ python3 spider.py
数据格式:
[
{
类型: "检查",
网址: "http://xxx..."
名称: "xx",
简介: "xxx",
属性: {
专科分类: "",
检查分类: "",
...
},
正常值: "",
临床意义: "",
注意事项: "",
检查过程: "",
不适宜人群: "",
不良反应与风险: "",
相关疾病: [
{名称: "aaa", 网址: ""},
{名称: "bbb", 网址: ""},
...
]
}
]
运行后默认存储在当前文件夹data.json
文件中,可在调用write_json()
函数时通过参数data_dir
指定目标输出目录
创建日志,将日志输出到moniter
将数据以json
格式输出到文件data.json
para:
data
: 数据,list格式
data_dir
: 数据输出目标文件夹,默认为DEFAULT_DATADIR为代码所在文件夹
encoding
: 编码,默认utf-8
indent
: json格式锁进,默认为2
爬虫入口
调用get_jiancha(url)
分别得到每一个网页的信息,将信息存储在一个list中,返回这个list。
若get_jiancha(url)
执行出错,则说明这个url
对应的网页404 Not Found
。
return: 所有数据,list(dictionary)
类型
对一个页面的信息进行爬取
通过调用get_intro()
, get_attr()
, get_normal()
, get_clinical()
, get_related_disease()
这几个函数得到一个检查的信息,若调用的函数出错,则表示该检查无此类信息。
将一个检查的所有信息保存在一个字典里返回。
para:
url
: 所爬网页网址
return: 单个检查的所有数据,dictionary
类型
获得一个检查的介绍部分信息(名称、简介)
para:
bs
: BeautifulSoup解析后的内容
return: 名称,简介,均为string
类型
获得一个检查的属性(专科分类、检查分类……)
para:
bs
: BeautifulSoup解析后的内容
return: 属性的所有内容,dictionary
类型
获得一个检查的正常值
注意不是所有检查都有正常值域,没有的话get_normal
函数返回异常,在get_jiancha
中处理
para:
bs
: BeautifulSoup解析后的内容
return: 正常值,string
类型
获得一个检查的临床信息(临床意义、注意事项、检查过程、不适宜人群、不良反应与风险)
不是所有检查的临床信息都齐全,只返回有的信息,没有的域不保留,在get_jiancha中返回日志报告什么信息没有。如果没有临床信息,则get_clinical
函数返回异常,在get_jiancha
中处理
para:
bs
: BeautifulSoup解析后的内容
return: 临床信息的所有内容,dictionary
类型
获得一个检查的相关疾病信息
对每一个相关疾病,建立一个dictionary
,内容为名称和网址。所有相关疾病组成一个list
。注意不是所有检查都有相关疾病,如果没有则get_related_disease
函数返回异常,在get_jiancha
中处理
para:
bs
: BeautifulSoup解析后的内容
return: 相关疾病,list(dictionary)
类型