개발자포럼 입니다.

북마크 아이콘

IT 개발자간 정보를 공유하고 논의가 이루어지는 공간입니다.
또다시 삽질 중인, python 크롤링 한글 인코딩 문제 입니다.. 도와 주세요 4
분류: 질문
이름: 프롬Hell


등록일: 2021-12-21 00:34
조회수: 817


한글깨짐.png (55.8 KB)



https://www.g2b.go.kr:8101/ep/preparation/orderplan/orderplanPubList.do


 


화면에서 검색어를 넣은 결과를 크롤링 하는 것이 목표입니다. Python 을 이용합니다. 


 


그런데.. 크롤링을 할때, 검색어를 한글로 넣으면 검색이 안됩니다 


 


그도 그럴것이?


 


크롬 개발자 도구를 보면 아래 처럼 나옵니다. 


 


 



20211221002416_vhonfeas.png


 


 


 


Form Data 를 보면,  아래 처럼 보입니다. 


voTaskClCd=&userCl=&popupYn=&popId=&popTaskTypeCd=&fromOrderEra=202112&toOrderEra=202201&taskTypeCd=&taskClCd=&taskTypeCd0=&taskTypeCd1=&taskTypeCd3=&taskTypeCd2=&taskTypeCd4=&fromOrderEraYear=2021&fromOrderEraMonth=12&toOrderEraYear=2022&toOrderEraMonth=01&ppsWay=&fromReleaseDt=2021%2F10%2F22&toReleaseDt=2021%2F12%2F21&instNm=&instCd=&instAddr=&industry1=&industry2=&bizNm=%BA%F1%B4%EB%B8%E9&totalRecordCount=26954&downloadRange=1&recordCountPerPage=10


 


 


이 부분이 도저히 해결이 안되네요.


 


물론, Selenium 으로 구현하면 문제 없이 되겠으나, 그 방법 말고 background 에서 크롤링을 하고 싶습니다. 


 


소스는 뭐.. 그야 말로 간단하죠


 


 


 


--------------------------------------------


# -*- coding: utf-8 -*-


from bs4.element import SoupStrainer


import requests


from bs4 import BeautifulSoup


from lxml import etree


import time


from datetime import datetime, timedelta








def doSearch(searchWord) :




    headers = {


        'Referer': 'https://www.g2b.go.kr:8101/ep/preparation/orderplan/orderplanPubList.do'


    }




    params = dict()


    params["voTaskClCd"] = "1"


    params["userCl"] = ""


    params["popupYn"] = ""


    params["popId"] = ""


    params["popTaskTypeCd"] = ""


    params["fromOrderEra"] = "202112"


    params["toOrderEra"] = "202201"


    params["taskTypeCd"] = ""


    params["taskClCd"] = "1"


    params["taskTypeCd0"] = ""


    params["taskTypeCd1"] = ""


    params["taskTypeCd3"] = ""


    params["taskTypeCd2"] = ""


    params["taskTypeCd4"] = ""


    params["fromOrderEraYear"] = "2021"


    params["fromOrderEraMonth"] = "12"


    params["toOrderEraYear"] = "2022"


    params["toOrderEraMonth"] = "01"


    params["ppsWay"] = ""


    params["fromReleaseDt"] = "2021/10/21"


    params["toReleaseDt"] = "2021/12/20"


    params["instNm"] = ""


    params["instCd"] = ""


    params["instAddr"] = ""


    params["detailPrdnmNo"] = ""


    params["industry1"] = ""


    params["industry2"] = ""


    params["bizNm"] = searchWord #""        # <-------------------------- 여기가 문제  "비대면" 으로 검색하면 검색결과 안나옴


    params["totalRecordCount"] = "11"


    params["recordCountPerPage"] = "10"




    # print(params)




    res = requests.post('https://www.g2b.go.kr:8101/ep/preparation/orderplan/orderplanPubList.do', data=params, headers=headers)




    soup = BeautifulSoup(res.text, 'html.parser')




    print('soup=', soup)






doSearch('비대면')

추천0 다른 의견0

다른의견 0 추천 0 아루스
2021-12-21

다른의견 0 추천 0 프롬Hell
2021-12-21

다른의견 0 추천 0 유효하지않네
2021-12-21

다른의견 0 추천 0 프롬Hell
2021-12-21
  • 욕설, 상처를 줄 수 있는 댓글은 삼가주세요.
짤방 사진  익명요구    
△ 이전글▽ 다음글 -목록보기