#coding=utf-8

from pymongo importMongoClientfrom lxml importetreeimportrequests

s= [u'标准编号:',u'发布单位:',u'发布日期:',u'状态:',u'实施日期:',u'开本页数:',u'采用关系:',

u'中图分类号:',u'中国标准分类号:',u'国际标准分类号:',u'国别:',u'关键词:',u'摘要:']#获取数据库

defget_db():

client= MongoClient('IP', 27017)

db=client.wanfang

db.authenticate("用户名","密码")returndb#获取第num条数据

defget_data(table, num):

i= 1

for item in table.find({}, {"content":1,"_id":0}):if i==num:if item.has_key('content') and item['content']:return item['content']else:

i+=1

continue

#列表转字符串

deflist_str(list):if len(list)!=0:returnlist[0]else:return ""

#提取分类号

defcode_ls(list):if len(list)!=0:

ls=list[0].split()

shanchu=[]for i inls:if ("("in i) or (")"in i) or ("("in i) or(")"ini):

shanchu.append(i)for i inshanchu:

ls.remove(i)returnlselse:return ""

#构造关键词列表

defkeywords_ls(list):if len(list)!=0:returnlistelse:return ""

#替代标准

defreplace_str(replace):if replace!="":

ls= [i.strip().replace(" ", "") for i inreplace]if len(ls)!=0:return ls[0][5:]else:return ""

else:return ""

#提取摘要

defsummary_str(list):if len(list)!=0:if list[0][0]!="<":returnlist[0]else:return ""

else:return ""

#调整日期格式

defdate_str(list):if len(list)!=0:

year= list[0].find(u'年')

month= list[0].find(u'月')

day= list[0].find(u'日')if month-year==2:

list[0]= list[0].replace(u"年",u"年0")if day-month==2:

list[0]= list[0].replace(u"月",u"月0")return list[0].replace(u"日","").replace(u"月","-").replace(u"年","-")else:return ""

#调整采标格式

defadopted_ls(string, ls):

dc={}

loc= string.find(',')if loc==-1:returnlselse:

dc["code"] =string[:loc].strip()

dc["type"] = string[loc+1:loc+4]

ls.append(dc)return adopted_ls(string[loc+4:],ls)#构造标准入库字典

defstandard_dict(html):

dc={}

tree=etree.HTML(html)#标准名称

dc["title"] = list_str(tree.xpath("//h1/text()"))#外文名称

dc["title_eng"] = list_str(tree.xpath("//h2/text()"))#标准编号

dc["standard_number"] = list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[0])))#发布单位

dc["publishing_department"] = list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[1])))#发布日期

dc["release_date"] = date_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[2])))#状态

dc["state"] = list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[3])))#实施日期

dc["enforcement_date"] = date_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[4])))#开本页数

dc["pages"] = list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[5])))#采用关系

dc["adopted"] = adopted_ls(list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[6]))), [])#中图分类号

dc["clc"] = code_ls(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[7])))#中国标准分类号

dc["ccs"] = code_ls(tree.xpath("//span[text()='%s']/following-sibling::*/child::*/text()"%(s[8])))#国际标准分类号

dc["ics"] = code_ls(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[9])))#国别

dc["country"] = list_str(tree.xpath("//span[text()='%s']/following-sibling::*/text()"%(s[10])))#关键词

dc["keywords"] = keywords_ls(tree.xpath("//span[text()='%s']/following-sibling::*/child::*/text()"%(s[11])))#摘要

dc["summary"] = summary_str(tree.xpath("//span[text()='%s']/parent::*/following-sibling::*/text()"%(s[12])))#替代标准

dc["replace_for"] = replace_str(tree.xpath("//div[@id='replaceStandard']//child::*//text()"))returndc#主函数

defmain():

db=get_db()

collection=db.standard

collection2=db.standard_cleanedfor item in collection.find({}, {"content":1,"_id":0}):if item.has_key('content') and item['content']:

dc= standard_dict(item['content'])

collection2.insert(dc)if __name__ == '__main__':

main()#以下代码用于测试清洗特定一条数据

#db = get_db()

#collection=db.standard

#collection2 = db.standard_cleaned

#data = get_data(collection, 8)

#dc = standard_dict(data)

#collection2.insert(dc)

#for k,v in dc.items():

#print k,v

## 以下代码用于测试提取摘要

#data = requests.get('http://d.wanfangdata.com.cn/Standard/ISO%208528-5-2013')

#dc = standard_dict(data.text)

#for k,v in dc.items():

#print k,v

## 以下代码用于测试修改日期格式

#l1 = [u"2017年6月28日"]

#l2 = [u"2017年10月27日"]

#l3 = [u"2017年12月1日"]

#l4 = [u"2017年7月1日"]

#print date_str(l1)

#print date_str(l2)

#print date_str(l3)

#print date_str(l4)

python必备源代码-Python 自用代码(某方标准类网页源代码清洗)相关推荐

  1. c# 获取html代码怎么写,C#获取网页源代码的方法

    本文实例讲述了C#获取网页源代码的方法.分享给大家供大家参考.具体如下: public string GetPageHTML(string url) { try { HttpWebRequest wr ...

  2. Python colorama 彩色打印实现代码

    这篇文章主要介绍了Python colorama 彩色打印实现代码,将介绍的类为Back, 它实现了与 Fore 类相同的九个关键字:BLACK.RED.GREEN.YELLOW.BLUE.MAGEN ...

  3. python骗局-1.python真的是万恶之源么?(初识python)

    python真的是万恶之源么? 计算机基础及puthon了解 1.计算机基础知识 cpu : 相当于人类大脑,运算和处理问题 内存 : 临时存储数据,单点就消失,4G,8G,16G,32G 硬盘 : ...

  4. php的源码怎么查看,php 查看页面源代码的实现代码(图文)

    本节分享的这段php代码,可用于显示与查看网页的源代码. 代码: /** * 显示与查看网页源代码 * edit:www.jbxue.com */ // Page title $pagetitle = ...

  5. 使用 Python3 获取网页源代码

    爬虫的数据爬取量非常大,显然不可能对每个页面都手动复制源代码,因此就有必要使用自动化的方式来获取网页源代码.requests是Python的一个第三方HTTP(Hypertext Transfer P ...

  6. c#正则表达式取出数据库中带html标签的内容,C#用正则表达式 获取网页源代码标签的属性或值...

    1.有url获取到网页源代码: using System.Web; using System.IO; using System.Net; private void GetHtmlinfo(string ...

  7. html历史查看器,网页源代码查看器

    网页源代码查看器是一款可以查看手机浏览器网页的代码查看工具.平时我们都是在电脑IE上查看代码,现在手机上也可以查看了.网页源代码查看器app可以进行网页源代码的查看,并且拥有高亮显示,支持同步预览以及 ...

  8. 苹果手机怎么能查看网页源代码

    苹果手机查看网页源代码的方法是:打开Safari浏览器――点击网址分享――点击书签――命名后点击存储――点击书签――点击编辑――点击看源代码即可查看. 苹果手机查看网页源代码的方法是: 1.打开Saf ...

  9. python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

最新文章

  1. 01-mybatis源码阅读
  2. Vijos 1197 - 费解的开关
  3. 英语阅读推荐:主题切换控件 ExpressionBuilder
  4. 如何高效管理BI报表的需求
  5. coreldraw x4如何重叠图片_CorelDRAW复制及镜面反转对象
  6. CSS:input输入框以及button按钮初始细节
  7. 优酷java贴吧_[杭州] [优酷] 阿里 Java 服务端开发招人啦-P7\P6+
  8. matlab bode 频率,matlab – bode和freqz之间的区别
  9. C# “配置系统未能初始化”
  10. python中的def是什么意思啊_等号上面有个def是什么意思?
  11. Performs recursive(递归) glob(全局) with given suffix and rootdir,使用os.walk(rootdir)和filename.endswith(s
  12. G - 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
  13. bgp高防-服务器单线、双线、三线、BGP线路哪个更好?
  14. ESP32的SDK开发之获取SNTP网络时间
  15. Jmeter - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)
  16. IN 与 DISTINCT
  17. DES算法实现S盒替换
  18. 新车被撞折旧费贬值损失怎么算
  19. 剪辑音频用什么软件好?
  20. Py_Finalize引发的异常

热门文章

  1. 关于Vue使用ueditor富文本编辑器上传图片
  2. hdmi 修改分辨率 android,【折腾】Firefly-RK3288 Android 5.1 HDMI输出4K(重新修改)
  3. 自媒体运营之:微博认证怎么弄黄v?(个人橙v认证)
  4. 设置命令提示符显示符行数
  5. 【智能制造】工业中的知识和智慧
  6. 【Unity-怎么做一个FPS游戏】一.场景的搭建和角色的移动
  7. SKY77645 导致的Rach failure问题
  8. Android硬件加速介绍与实现
  9. linux下c语言读取csv文件,C语言读取csv文件
  10. 最新WordPress收费模板QUX主题 DUX轻语博客加强版