[lydstar]专利整理总结

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-8
import urllib2
from 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)




你可能感兴趣的:([lydstar]专利整理总结)