본문 바로가기
728x90

파이썬45

cloudflare 우회해서 크롤링 하기 - selenium, 파이썬 이전 글에서 zenrows 를 이용해 cloudflare 를 우회해서 크롤링하는 소스를 올렸는데​테스트를 하다보니 잘되는데 프리 이용횟수를 초과하니 막혀버려서 다른 방법을 찾게 되었다. ​아래 방법은 selenium 을 이용하는 방법으로 물론 무료이다. ​원래 selenium 을 이용할 경우 cloudflare가 bot 으로 인식해서 크롤링이 막히는데​해당 방법은 bot 으로 인식하지 않도록 처리했다. ​몇일 테스트를 해봤는데 문제없이 잘 돌아간다. ​from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsimport subprocessfrom webdriver_manager.chrome import Chrome.. 2024. 7. 18.
한번에 여러개 문자열 치환기 - 파이썬 한번에 하나씩 치환하는 것이 아닌 지정된 모든 문자열을 한번에​치환해 주는 함수이다. ​replacements 에 치환을 원하는 문자들을 정리해주고 함수를 호출하면​한번에 치환해서 반환해준다.​ import re def mreplace(text, replacements):    def rmatch(match): return replacements[match.group(0).lower()]        regex = re.compile("|".join(map(re.escape, replacements.keys())), re.IGNORECASE)    return regex.sub(rmatch, text) #치환 문자열 replacements = {    "[메일]": "[Mail]",    "[속보]": .. 2024. 7. 18.
UnicodeEncodeError: 'cp949' codec can't encode character '\u2013' 파일에 텍스트 값을 입력하는데 해당 오류가 발생했습니다. ​오류 원인은 한국어 환경에서의 인코딩은 'cp949'로 지정이 된 경우가 많은데,​유니코드('utf-8') 등 다른 인코딩 방법으로 인코딩된 파일을 다루는 경우,​인코딩 버전 불일치로 인하여 해당 에러가 발생할 수 있습니다.​해결방법으로는​encoding 방법을 명시적으로 지정해주시면 해결이됩니다. ​ . with open(fileName, "a", encoding='utf-8') as file: 2024. 7. 16.
cloudflare 우회해서 크롤링 하기 - zenrows 보안을 위해 cloudflare 를 사용하는 페이지들이 있다.  이런 페이지를 크롤링하려면 여러가지 난관들이 있는데 구글링을 열심히 한 결과  한 가지 방법을 찾을 수 있었다.   1. https://www.zenrows.com/ 사이트에 가입 후 빌더에서 api key 를 생성한다  2. 아래와 같이 소스에 api key를 사용해서 크롤링한다 import requests from bs4 import BeautifulSoup as bs url = 'SITE_URL' apikey = 'API_KEY' params = {     'url': url,     'apikey': apikey,     'js_render': 'true',     'premium_proxy': 'true', } response = .. 2024. 7. 15.
for문 사용법 - 파이썬 * 모델이 있는 for문 for object in object_list:    print(object.title) * 모델이 없는 for문 for i in range(1,11): #1~10까지 출력    print(i) 2024. 7. 8.
django 내장 템플릿 필터 * add : 변수에 값을 추가함  . {{"2"|add:"3"}} -> 5  . {{"te"|add:"st"}} -> test * addslashes : 따옴표 앞에 슬래시를 추가  . {{ value|addslashes }} * capfirst : 첫번째 문자를 대문자로 바꾼다  . {{ "test"|capfirst }} * center : 주어진 폭의 필드에서 중앙정렬  . {{ value|center:"15" }} * cut : 인수로 주어진 값을 모두 제거  . {{ "test"|cut:"e" }} -> e를 제거해서 tst 출력 * date : 지정된 형식에 따라 날짜 형식을 지정  . {{ value|date:"D d M Y" }} * default : 값이 false 이면 기본값으로 사용 .. 2024. 7. 4.
반응형