49 lines
2.3 KiB
Python
49 lines
2.3 KiB
Python
import requests, io, re
|
||
from bs4 import BeautifulSoup
|
||
hd={"User-Agent":"Mozilla/5.0"}
|
||
BASE="https://www.kofpi.or.kr"
|
||
out=io.open("_counts_out.txt","w",encoding="utf-8")
|
||
def cnt(u):
|
||
# try last page then count items, or find total via number column
|
||
r=requests.get(BASE+u,headers=hd,timeout=25); r.encoding=r.apparent_encoding
|
||
s=BeautifulSoup(r.content,"html.parser")
|
||
txt=s.get_text(" ",strip=True)
|
||
m=re.search(r"(?:총|전체)\s*(?:게시물)?\s*[::]?\s*([\d,]+)\s*(?:건|개)",txt)
|
||
tot=m.group(1) if m else None
|
||
# board number column (sequential) max -> total
|
||
nums=[]
|
||
for td in s.select("table tbody tr td.num, table tbody tr td:first-child, .num, td.no"):
|
||
t=td.get_text(strip=True)
|
||
if t.isdigit(): nums.append(int(t))
|
||
# gallery items
|
||
gal=len(s.select(".gallery li, .photo_list li, ul.list_gallery li, .bbs_gallery li, li.gallery"))
|
||
return tot, (max(nums) if nums else None), gal
|
||
for nm,u in [
|
||
("임산물레시피","/info/imupStory/forestStory_02.do"),
|
||
("세계목재300종","/info/imupStory/wood_03.do"),
|
||
("해외시장보고서","/info/exportInfo/exportData_02.do"),
|
||
("연구보고서수출","/info/exportInfo/exportData_03.do"),
|
||
("통계자료수출","/info/exportInfo/exportData_04.do"),
|
||
("발굴업체홍보","/info/exportInfo/exportData_05.do"),
|
||
("임업기계장비수출","/info/exportInfo/exportData_06.do"),
|
||
("기술이전현황","/info/tech/techComm_01_02.do"),
|
||
("사업화성공사례","/info/tech/techComm_01_03.do"),
|
||
("보유특허정보","/info/tech/techComm_01_01.do"),
|
||
("기술자료집","/info/tech_06.do"),
|
||
("관련양식기술","/info/tech/techComm_03_01.do"),
|
||
("목재제품규격품질검사","/service/introduceInfo_04.do"),
|
||
("KS인증","/service/introduceInfo_11.do"),
|
||
("임업기계장비인증","/service/introduceInfo_34.do"),
|
||
("조달물자검사","/service/introduceInfo_48.do"),
|
||
("수출업체","/info/exportInfo/exportSite_02_01.do"),
|
||
("관련사이트수출","/info/exportInfo/exportSite_02_02_01.do"),
|
||
("기관별지원사업","/info/exportInfo/govSupport_03_01.do"),
|
||
("내게맞는지원사업","/info/exportInfo/govSupport_04_01_01.do"),
|
||
]:
|
||
try:
|
||
tot,mx,gal=cnt(u)
|
||
out.write(f"{nm} {u} total={tot} maxnum={mx} gallery={gal}\n")
|
||
except Exception as e:
|
||
out.write(f"{nm} {u} ERR {e}\n")
|
||
out.close(); print("done")
|