본문 바로가기
반응형
정규표현식 - match 객체 method match 문자열의 처음부터 정규식과 match되는지 찾기 search 문자열 전체를 search해서 정규식과 match되는지 찾기 match와의 차이점 : match : 처음이 일치하지 않으면 match 안됨 search : 처음이 일치하지 않아도 전체 search 함 findall 정규식과 match되는 모든 문자열을 list로 리턴 finditer 정규식과 match되는 모든 문자열을 iterator 객체로 리턴 split 패턴으로 나누기 sub 패턴 대체하기 2021. 2. 23.
정규표현식 - 사용방법(컴파일) 컴파일 후 매칭 import re text = 'hi my name is xxx' p = re.compile('[a-z]') print(re.findall(p, text)) # ['h', 'i', 'm', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'x', 'x', 'x'] 패턴 객체 p 생성 후 매칭 (재사용 가능) 2. 축약 import re text = 'hi my name is xxx' print(re.findall('[a-z]', text)) # ['h', 'i', 'm', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'x', 'x', 'x'] 2021. 2. 23.
정규 표현식 - 메타 문자 정규표현식 - 특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어(문자열)를 처리할 때 사용하는 기법 문자 클래스 [ ] [ ] - [ ] 사이의 문자들과 매치 ex) [a-zA-Z] - 알파벳 모두 [0-9] - 숫자 Dot(.) a.b - a와 b 사이의 모든 문자 매치 // \n을 제외한 모든 문자 한 개와 매치 // 여러개 사용 가능 ex) a.b - "aab", "a1b", "a#b" 모두 매치 a..b - "axxb", a"22b", a##b" 모두 매치 import re s = "a1234bllla#b" p = re.compile('a.b') m = p.findall(s) print(m) # ['a#b'] s = "a1234bllla#!@b" p = re.compile('a.... 2021. 2. 23.
네이버 주식 크롤링 import pandas as pd import requests from tqdm import trange for i in trange(135): html = requests.get('https://finance.naver.com/item/frgn.nhn?code=065450&page={}'.format(i + 1)) table = pd.read_html(html.text) if i == 0: data = table[2].dropna().reset_index(drop = True) if i > 0: data1 = table[2].dropna().reset_index(drop = True) data = pd.concat([data, data1]) data = data.reset_index(drop = Tr.. 2020. 11. 2.
ValueError: invalid literal for int() with base10: ' ' 문자열을 정수로 바꾸기 위해 int()를 사용하였는데 ex) a = '1.7' int(a) ValueError: invalid literal for int() with base10: ' 1.7 ' 이 발생하였다. 해당 문자열이 소수가 포함된 실수라 발생한 문제로 int(float(a)) 를 사용하여 문제 해결 2020. 10. 19.
네이버 인기검색어 크롤링 from urllib.request import urlopen from bs4 import BeautifulSoup from html2text import html2text import pprint if __name__ == "__main__": url = urlopen("https://www.naver.com/") bs = BeautifulSoup(url,'html.parser') rank = bs.find_all('span',class_='ah_k') list = [] dic = {} for val in rank: list.append(html2text(str(val)).replace("\n","",2)) for n in range(0,20): dic[n+1] = list[n] dic = pprint.. 2020. 10. 19.
트위터 전처리 import pandas as pd import multiprocessing import numpy as np from collections import defaultdict from tqdm import trange import re import numpy as np from collections import defaultdict data = pd.read_csv('twitter.csv',engine='python',encoding='CP949') del data['username'] def pre_1(data): # data.drop_duplicaties() data.dropna(axis=0) data.dropna(subset=["content"],axis = 0, inplace = True) # s.. 2020. 8. 4.
트위터 크롤링 # import packages import time import datetime import GetOldTweets3 as got import logging import logging.handlers import requests from bs4 import BeautifulSoup from multiprocessing import Pool import pandas as pd import os # 트윗 수집하는 함수 정의 # def get_tweets(start_date, end_date, keyword, keyword2): def get_tweets(start_date, end_date, keyword): # 범위 끝을 포함하게 만듬 end_date = (datetime.datetime.strptime.. 2020. 7. 28.
네이버 증권뉴스 크롤링(2) import pandas as pd import re import requests from bs4 import BeautifulSoup from urllib.request import urlopen from urllib.request import HTTPError from urllib import parse from tqdm import trange data = pd.read_csv("이지케어텍_url.csv") data = data['url'] hh = [] ii = [] for i in trange(len(data)): url = data[i] req = requests.get(url) bs = BeautifulSoup(req.content, "html.parser") div = bs.find_all.. 2020. 7. 27.
네이버 증권뉴스 크롤링(1) import time import pandas as pd import re import requests from bs4 import BeautifulSoup from urllib.request import urlopen from urllib.request import HTTPError from urllib import parse import chardet import math import numpy as np def craw(): news = bs.find_all('dl', {'class' : 'newsList'}) news_list = [] news_list_2 = [] title_list = [] title_list_2 = [] url_list = [] url_list_2 = [] for new in.. 2020. 7. 27.
반응형