반응형
국회 의안정보시스템(http://likms.assembly.go.kr/bill/main.do)에는 발의된 법안과 진행상황에 대한 정보가 실시간으로 올라오는데, 이를 스크래핑하는 코드를 짜보았다.
밑의 코드는 AWS Lambda에서 돌아가도록 코드를 작성한 것이고, 각자 상황에 맞춰서 일부 수정하면 될 듯 하다.
import requests
from bs4 import BeautifulSoup
import boto3
def cleaner(msg) :
msg = msg.replace("\t","")
msg = msg.replace("\r","")
msg = msg.replace("\n","")
return msg.strip()
def handler(event, context) :
dynamodb = boto3.client('dynamodb')
url = "http://likms.assembly.go.kr/bill/BillSearchResult.do"
headers = {
"Host": "likms.assembly.go.kr",
"Connection": "keep-alive",
"Cache-Control": "max-age=0",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
"Origin": "http://likms.assembly.go.kr",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Referer": "http://likms.assembly.go.kr/bill/main.do",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
}
data = {
"tabMenuType":"billSimpleSearch",
"billKindExclude":"",
"hjNm":"",
"ageFrom":"21", #21대 국회
"ageTo":"21",
"billKind":"전체",
"generalResult":"",
"proposerKind":"전체",
"proposeGubn":"전체",
"proposer":"",
"empNo":"",
"billNo":"",
"billName":"금융투자",
}
s = requests.Session()
s.headers = headers
r = s.post(url, data=data)
soup = BeautifulSoup(r.content, 'html.parser')
trs = soup.select("div.tableCol01")[0].select("table tbody tr")
for tr in trs :
tds = [cleaner(td.text) for td in tr.select("td")]
billId = tr.select('td')[1].find('a')['href'].split("'")[1]
content = {
"no" : {"S":tds[0]},
"title" : {"S":tds[1]},
"gubun" : {"S":tds[2]},
"submit" : {"S":tds[3]},
"pass": {"S":tds[4]} if tds[4] != "" else {"S":" "},
"result" : {"S":tds[5]} if tds[5] != "" else {"S":" "},
"progress" : {"S":tds[7]},
"url" : {"S":"http://likms.assembly.go.kr/bill/billDetail.do?billId={}".format(billId)}
}
result = dynamodb.put_item(TableName='law_change', Item=content)
반응형
'코딩 > 파이썬(Python)' 카테고리의 다른 글
[파이썬] 파이썬, 머신러닝으로 네이버페이 키패드 인식 후 입력하기 (21) | 2020.09.03 |
---|---|
[서버] Centos6에 python3.6, OpenCV 설치하기 (0) | 2020.08.20 |
[파이썬] 머신러닝으로 캡챠(captcha) 뚫기 2편 (위메프 파트너) (9) | 2020.08.17 |
[파이썬] 코스피, 코스닥 전 종목 데이터 스크래핑 (0) | 2020.08.12 |
[파이썬] 머신러닝으로 민원24, 대법원 캡챠(Captcha) 뚫기 (32) | 2019.10.16 |