크롤링 기본 코드

import requests
from bs4 import BeautifulSoup

url = '수정필요'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

datagroup = soup.select('수정필요') # 클래스 '.' , 아이디 '#' 
for no, data in enumerate(datagroup, 1):
    print(no, data.text)
import requests
from bs4 import BeautifulSoup

url = 'https://ridibooks.com/category/bestsellers/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

datagroup = soup.select('.title_text') # 클래스 '.' , 아이디 '#' 
for no, data in enumerate(datagroup, 1):
    print(no, data.text.strip())
1 한 권으로 읽는 컴퓨터 구조와 프로그래밍
2 개발자에서 아키텍트로
3 시드 마이어
4 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커
5 오브젝트
6 풀스택 서버리스
7 업무에 바로 쓰는 SQL 튜닝
8 웹소설 써서 먹고삽니다
9 메타버스, 이미 시작된 미래
10 파이썬으로 살펴보는 아키텍처 패턴
11 그림으로 이해하는 AWS 구조와 기술
12 개정판 | 리팩터링 (2판)
13 데이터 스토리
14 러닝 리액트(2판)
15 일잘러의 비밀, 구글 스프레드시트 제대로 파헤치기
16 눈치껏 못 배웁니다, 일센스
17 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
18 로블록스 게임 제작 무작정 따라하기
19 Do it! 점프 투 파이썬 -전면 개정판
20 UX/UI의 10가지 심리학 법칙

이미지 크롤링 데이터 저장하기

import shutil # 고수준의 파일연산 라이브러리
import requests # request를 보낼 수 있는 라이브러리

url = 'https://img.ridicdn.net/cover/194000109/xxlarge#1'
r = requests.get(url, stream=True)
with open('sample.jpg', 'wb') as f:
    r.raw.decode_content = True
    shutil.copyfileobj(r.raw, f)
import requests
from bs4 import BeautifulSoup

r = requests.get('https://img.ridicdn.net/cover/194000109/xxlarge#1', stream=True)
if r.status_code == 200:
    with open('test.jpg', 'wb') as f:
        for data in r.iter_content(1024):
            f.write(data)

크롤링 데이터 홈페이지로 저장하기

import requests
from bs4 import BeautifulSoup

url = 'https://ridibooks.com/category/bestsellers/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

datagroup = soup.select('.thumbnail') # 클래스 '.' , 아이디 '#' 

for data in datagroup:
    print('https:' + data['data-src'][:-7] + 'xxlarge#1')
https://img.ridicdn.net/cover/194000109/xxlarge#1
https://img.ridicdn.net/cover/3649000021/xxlarge#1
https://img.ridicdn.net/cover/443000917/xxlarge#1
https://img.ridicdn.net/cover/194000106/xxlarge#1
https://img.ridicdn.net/cover/754031863/xxlarge#1
https://img.ridicdn.net/cover/4489000001/xxlarge#1
https://img.ridicdn.net/cover/443000912/xxlarge#1
https://img.ridicdn.net/cover/754031846/xxlarge#1
https://img.ridicdn.net/cover/222002588/xxlarge#1
https://img.ridicdn.net/cover/2777000044/xxlarge#1
https://img.ridicdn.net/cover/1160000024/xxlarge#1
https://img.ridicdn.net/cover/1370000008/xxlarge#1
https://img.ridicdn.net/cover/1160000029/xxlarge#1
https://img.ridicdn.net/cover/443000859/xxlarge#1
https://img.ridicdn.net/cover/3903000015/xxlarge#1
https://img.ridicdn.net/cover/754026976/xxlarge#1
https://img.ridicdn.net/cover/194000105/xxlarge#1
https://img.ridicdn.net/cover/3780000117/xxlarge#1
https://img.ridicdn.net/cover/443000914/xxlarge#1
https://img.ridicdn.net/cover/443000907/xxlarge#1
'https:' + datagroup[0]['data-src']
'https://img.ridicdn.net/cover/194000109/large#1'
import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://ridibooks.com/category/bestsellers/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

책순위 = []
책제목 = []
책이미지 = []

책제목크롤링 = soup.select('.title_text')
for no, data in enumerate(책제목크롤링, 1):
    책순위.append(no)
    책제목.append(data.text.strip())

책이미지크롤링 = soup.select('.thumbnail') 

for data in 책이미지크롤링:
    책이미지.append('https:' + data['data-src'][:-7] + 'xxlarge#1')

데이터 = {
    '책순위':책순위,
    '책제목':책제목,
    '책이미지':책이미지
}
데이터 = pd.DataFrame(데이터)
데이터
책순위 책제목 책이미지
0 1 시드 마이어 https://img.ridicdn.net/cover/194000109/xxlarge#1
1 2 한 권으로 읽는 컴퓨터 구조와 프로그래밍 https://img.ridicdn.net/cover/3649000021/xxlar...
2 3 개발자에서 아키텍트로 https://img.ridicdn.net/cover/443000917/xxlarge#1
3 4 Node.js 디자인 패턴 바이블 https://img.ridicdn.net/cover/194000106/xxlarge#1
4 5 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 https://img.ridicdn.net/cover/754031863/xxlarge#1
5 6 비전공자를 위한 이해할 수 있는 IT 지식 https://img.ridicdn.net/cover/4489000001/xxlar...
6 7 파이썬으로 살펴보는 아키텍처 패턴 https://img.ridicdn.net/cover/443000912/xxlarge#1
7 8 Let's Get IT 자바스크립트 프로그래밍 https://img.ridicdn.net/cover/754031846/xxlarge#1
8 9 눈치껏 못 배웁니다, 일센스 https://img.ridicdn.net/cover/222002588/xxlarge#1
9 10 메타버스, 이미 시작된 미래 https://img.ridicdn.net/cover/2777000044/xxlar...
10 11 모던 자바스크립트 Deep Dive https://img.ridicdn.net/cover/1160000024/xxlar...
11 12 비전공자도 배워서 바로 쓰는 비즈니스 데이터 분석 입문 https://img.ridicdn.net/cover/1370000008/xxlar...
12 13 개정판 | 시작하세요! 도커/쿠버네티스 https://img.ridicdn.net/cover/1160000029/xxlar...
13 14 혼자 공부하는 머신러닝+딥러닝 https://img.ridicdn.net/cover/443000859/xxlarge#1
14 15 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 https://img.ridicdn.net/cover/3903000015/xxlar...
15 16 개정판 | 리액트를 다루는 기술 https://img.ridicdn.net/cover/754026976/xxlarge#1
16 17 다재다능 코틀린 프로그래밍 https://img.ridicdn.net/cover/194000105/xxlarge#1
17 18 Vue.js 프로젝트 투입 일주일 전 https://img.ridicdn.net/cover/3780000117/xxlar...
18 19 NGINX 쿡북 https://img.ridicdn.net/cover/443000914/xxlarge#1
19 20 일잘러의 비밀, 구글 스프레드시트 제대로 파헤치기 https://img.ridicdn.net/cover/443000907/xxlarge#1
def 이미지양식변환(path):
    return '<img src="'+ path + '" width="100px" >'

데이터.to_html('index.html', escape=False, formatters=dict(책이미지=이미지양식변환))
s = ''
for i, j, k in zip(책순위, 책제목, 책이미지):
    s += f'<tr>\
                <td>{i}</td>\
                <td>{j}</td>\
                <td><img src={k}></td>\
           </tr>'
s = '<table>' + s + '</table>'
with open("노동.html", "w") as f:
    f.write(s)

크롤링 이미지 데이터 파일로 저장하기

import requests
from bs4 import BeautifulSoup
import shutil # 고수준의 파일연산 라이브러리

url = 'https://ridibooks.com/category/bestsellers/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

datagroup = soup.select('.thumbnail') # 클래스 '.' , 아이디 '#' 

for data in datagroup:
    print('https:' + data['data-src'][:-7] + 'xxlarge#1')

'''
url = 'https://img.ridicdn.net/cover/194000109/xxlarge#1'
r = requests.get(url, stream=True)
with open('sample.jpg', 'wb') as f:
    r.raw.decode_content = True
    shutil.copyfileobj(r.raw, f)
'''
https://img.ridicdn.net/cover/3649000021/xxlarge#1
https://img.ridicdn.net/cover/443000917/xxlarge#1
https://img.ridicdn.net/cover/194000109/xxlarge#1
https://img.ridicdn.net/cover/754031863/xxlarge#1
https://img.ridicdn.net/cover/1160000027/xxlarge#1
https://img.ridicdn.net/cover/443000925/xxlarge#1
https://img.ridicdn.net/cover/443000922/xxlarge#1
https://img.ridicdn.net/cover/754031183/xxlarge#1
https://img.ridicdn.net/cover/2777000044/xxlarge#1
https://img.ridicdn.net/cover/443000912/xxlarge#1
https://img.ridicdn.net/cover/754031919/xxlarge#1
https://img.ridicdn.net/cover/443000786/xxlarge#1
https://img.ridicdn.net/cover/443000924/xxlarge#1
https://img.ridicdn.net/cover/443000923/xxlarge#1
https://img.ridicdn.net/cover/443000907/xxlarge#1
https://img.ridicdn.net/cover/222002588/xxlarge#1
https://img.ridicdn.net/cover/3903000015/xxlarge#1
https://img.ridicdn.net/cover/754031983/xxlarge#1
https://img.ridicdn.net/cover/754026225/xxlarge#1
https://img.ridicdn.net/cover/3649000017/xxlarge#1
import requests
from bs4 import BeautifulSoup
import shutil # 고수준의 파일연산 라이브러리

url = 'https://ridibooks.com/category/bestsellers/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

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

datagroup = soup.select('.thumbnail') # 클래스 '.' , 아이디 '#' 
filename = 0

for data in datagroup:
    url = 'https:' + data['data-src'][:-7] + 'xxlarge#1'
    r = requests.get(url, stream=True)
    #성산일출봉 폴더에 다운로드 받아 저장합니다.
    with open('성산일출봉/' + str(filename) + '.jpg', 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)
    filename += 1