[lydstar]专利整理总结

来源:互联网 发布:2016年保险行业数据 编辑:程序博客网 时间:2024/06/05 02:47

T老板让整理国外的一些专利,包括专利名称、专利号、申请日期、摘要等信息,还需要进行简单分类统计,顺便记录一下操作流程留作后用。

目标链接:

http://www.freepatentsonline.com/result.html?p=1&srch=ezsrch&pn=&apn=&all=&ttl=&abst=internet+of+thing+search&aclm=&spec=&apd=&apdto=&isd=&isdto=&prir=&ccl=&icl=&in=&icn=&is=&ic=&an=&acn=&as=&ac=&ref=&fref=&oref=&parn=&pex=&asex=&agt=&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance&search=Search和

http://www.freepatentsonline.com/result.html?p=1&srch=ezsrch&pn=&apn=&all=&ttl=&abst=RFID+search&aclm=&spec=&apd=&apdto=&isd=&isdto=&prir=&ccl=&icl=&in=&icn=&is=&ic=&an=&acn=&as=&ac=&ref=&fref=&oref=&parn=&pex=&asex=&agt=&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance&search=Search

写个python 爬虫来搞定吧(翻页就不先处理了,怎么高效怎么来了)


# coding=utf-8import urllib2from bs4 import BeautifulSoup # 2013年12月5日专利爬取总结if __name__ == '__main__':    # 第一类    # url = 'http://www.freepatentsonline.com/result.html?p=1&srch=ezsrch&pn=&apn=&all=&ttl=&abst=internet+of+thing+search&aclm=&spec=&apd=&apdto=&isd=&isdto=&prir=&ccl=&icl=&in=&icn=&is=&ic=&an=&acn=&as=&ac=&ref=&fref=&oref=&parn=&pex=&asex=&agt=&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance&search=Search'    # 第二类第1页    # url = 'http://www.freepatentsonline.com/result.html?p=1&srch=ezsrch&pn=&apn=&all=&ttl=&abst=RFID+search&aclm=&spec=&apd=&apdto=&isd=&isdto=&prir=&ccl=&icl=&in=&icn=&is=&ic=&an=&acn=&as=&ac=&ref=&fref=&oref=&parn=&pex=&asex=&agt=&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance&search=Search'    # 第二类第2页    # url = 'http://www.freepatentsonline.com/result.html?p=2&srch=ezsrch&abst=RFID+search&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance'    # 第二类第3页    url = 'http://www.freepatentsonline.com/result.html?p=3&srch=ezsrch&abst=RFID+search&uspat=on&usapp=on&date_range=all&stemming=on&sort=relevance'    webdata = urllib2.urlopen(url).read()    soup = BeautifulSoup(webdata)    # 标签属性匹配    trs = soup.find("table", { "class" : "listing_table" }).findAll('tr')    for tr in trs:                        label = tr.contents[1].find('label')        if label is not None:            # strip()去前后空格            sequenceNum = label.text.split("\n")[1].strip()                       patentNum = tr.contents[3].text.strip()            patentName = tr.contents[5].find('a').text.strip()            # 构造目标url            tzurl = tr.contents[5].find('a')['href']            targeturl = "http://www.freepatentsonline.com" + tzurl            # print targeturl            targetWeb = urllib2.urlopen(targeturl).read()            targetSoup = BeautifulSoup(targetWeb)            # 标签属性匹配            dispdocs = targetSoup.findAll("div", { "class" : "disp_doc2" })            abstract = dispdocs[3].find("div", { "class" : "disp_elm_text" }).text.strip()            fillDate = dispdocs[8].find("div", { "class" : "disp_elm_text" }).text.strip()                        # 输出            print "序号:", sequenceNum            print '专利名称 :', patentName            print "专利号:", patentNum            print "摘要:", abstract            print "申请日期:", fillDate            print '.........copyright by lyd..........'            # 写入文件            fileHandle = open ('d:/lydresult.csv', 'a')            fileHandle.write('"' + sequenceNum + '"' + ',' + '"' + patentName + '"' + ',' + '"' + patentNum + '"' + ',' + '"' + fillDate + '"' + ',' + '"' + abstract + '"' + '\n')            # if ',' in patentName:                # print 'aware the ', patentNum            # fileHandle.write(patentName + ',' + patentNum + '\n')            fileHandle.close()


用程序跑完发现46、67格式有误

原来每一页格式并不一致,不过还好只有两个有问题,手动获取一下算了。

注意此操作中对逗号的处理:csv文件中逗号处理,加双引号即可。如”搜索引擎,yidong,haohao”。

后续就是使用Excel来处理,包括自动换行、行高、条件格式设置等。

1.自动换行设置,设置单元格格式为自动换行

2.设置行高

3.冻结窗口

4.筛选,删除重复和无关记录

5.条件格式,不同类别添加不同颜色

效果如下:

6.统计,使用函数SUBTOTAL()

如,=SUBTOTAL(3,D2:D19)




0 0
原创粉丝点击