데이터사이언스/크롤링
[Requests/BeutifulSoup] 특허 검색
Zero Coding
2022. 6. 20. 13:16
1. 키워드에 맞는 특허에 대한 검색
- WIPS등에서 특허검색식을 이용한 방식이 더 정확하고 적절하나 간이로 검색하기 위해서 아래 코드 사
import requests
from bs4 import BeautifulSoup
from urllib import parse
from datetime import datetime as dt
import pandas as pd
import time
import re
pageNo = 1
end_page = -1
key1 = "스마트 뷰티 미러"
key2 = key1.replace(" ", "*")
key1_de = parse.quote(parse.quote(key1))
key2_de = parse.quote(parse.quote(key2))
rows = 30
df = pd.DataFrame(columns=["상태", "제목", "출원인", "요약", "출원일자", "등록일자", "공개일자"])
index = 0
while True:
url = f"http://kportal.kipris.or.kr/kportal/resulta.do?next=patentList&FROM=SEARCH&searchInTransKorToEng=N&searchInTransEngToKor=N&row={rows}&page={pageNo}&queryText={key1_de}&expression={key2_de}"
data = requests.get(url)
data_new = re.sub('<!HS>|<!HE>', "", data.text)
xml= BeautifulSoup(data_new, "xml")
items = xml.select("article")
if end_page + 1 != pageNo:
if len(items) > 1:
for li in items:
df.loc[index] = {
"상태": li.select_one("STATUS").text,
"제목": li.select_one("TLV").text,
"출원인": li.select_one("APV").text,
"요약": li.select_one("ABV").text,
"출원일자": li.select_one("ADV").text,
"등록일자": li.select_one("GDV").text,
"공개일자": li.select_one("ODV").text,
}
index += 1
else:
print("-" * 100)
print(f"{dt.now().strftime('%Y-%m-%d %H:%M:%S')} Crawling is finished at LastPage {pageNo - 1}, Thank You!!")
break
else:
print("-"*100)
print(f"{dt.now().strftime('%Y-%m-%d %H:%M:%S')} Crawling is finished at PageNo {pageNo-1}, Thank You!!")
break
print(f"{dt.now().strftime('%Y-%m-%d %H:%M:%S')} Url Request Success, PageNo is {pageNo}")
pageNo += 1
time.sleep(0.5)
df.to_excel(f"data/특허정보_{key1}_{dt.now().strftime('%Y%m%d_%H%M')}.xlsx")