TIL

21.Dec.22 python // Image 파일 크롤링 다운 방법 및 CSV파일로 다운

0_hoonie 2021. 12. 30. 17:10

 

Image 파일 크롤링 시 파일명 숫자 붙이기

images = soup.find_all("img", attrs={"class" : "thumb_img"})

for idx, image in enumerate(images): #파일을 생성할때 인덱스 값 1,2,3을 자동으로붙여주기 위해서 이렇게 선언한것

 

Image URL 가져오고 타고 들어가기

#print(image["src"]) #src 속성에 있는 값을 가지고 오는것

image_url = image["src"]

if image_url.startswith("//"):

image_url = "https:" + image_url #image_url 값에 https가 없어서 넣어줌으로써 제대로 링크 타고 갈 수 있도록 한 것

print(image_url)

image_res = requests.get(image_url)

image_res.raise_for_status() ##접속에 문제 생기면

with open("movie_{}_{}.jpg".format(year, idx+1), "wb") as f:

f.write(image_res.content)

if idx>= 4: #상위 5개 이미지까지만 다운로드

break

 

크롤링한 정보를 CSV(엑셀 호환)파일로 다운 받는 법

*CSV파일이란?
CSV (Comma Separated Values) 파일은 데이터 목록이 포함 된 일반 텍스트 파일입니다. 이러한 파일은 서로 다른 응용 프로그램간에 데이터를 교환하는 데 자주 사용됩니다. 예를 들어 데이터베이스 및 연락처 관리자는 종종 CSV 파일을 지원합니다.
이러한 파일은 문자로 구분 된 값 또는 쉼표로 구분 된 파일이라고도합니다. 대부분 쉼표 문자를 사용하여 데이터를 구분 (또는 구분)하지만 때로는 세미콜론과 같은 다른 문자를 사용합니다. 아이디어는 복잡한 데이터를 한 응용 프로그램에서 CSV 파일로 내 보낸 다음 해당 CSV 파일의 데이터를 다른 응용 프로그램으로 가져올 수 있다는 것입니다.
출처: https://www.thefastcode.com/ko-krw/article/what-is-a-csv-file-and-how-do-i-open-it


## CSV파일로 저장을 통해 결과물을 엑셀로 임포트 하는방법!
filename = "시가총액 1-200.csv"
f = open(filename, "w", encoding="utf8", newline="") #newline=""은 공백을 없애주기 위해서 선언한것임
##혹시 글자가 깨질경우 encoding을 utf-8-sig로 해주면 된다!!
writer= csv.writer(f)

#항목 엑셀에 해주는 것
title = "N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 외국인비율 거래량 PER ROE".split("\t")
#[n,종목명,현재가,...]로 출력된다. split("\t")-> 탭으로 구분한 데이터들이 리스트로 들어가도록하는 것
writer.writerow(title)

for page in range(1,5):
res = requests.get(url + str(page))#각 페이지별로 모두 크롤링
res.raise_for_status()
soup = BeautifulSoup(res.text,"lxml")

data_rows = soup.find("table", attrs={"class":"type_2"}).find("tbody").find_all("tr") #.을 통해서 여러개를 동시에 찾도록 할 수 있다.
for row in data_rows:
columns = row.find_all("td")
if len(columns) <= 1:##의미없는 데이터는 skip
continue
data = [column.get_text for column in columns] #한 줄짜리 for 문을 쓰는 방법
#print(data)
writer.writerow(data)