오늘의학습

2023.06.20

이경찬 :) 2023. 6. 20. 17:12

 

오늘은 api와 웹 스크래핑을 배웠습니다.

 

1. api

 

# url 불러오기
url = "http://data4library.kr/api/loanItemSrch?format=json&startDt=2021-04-01&endDt=2021-04-30&age=20authKey=2df1fe5530051e3b7d359ddaf2346b1af20edb2326fad85e3b7809cafcd84135"
r = requests.get(url)
data = r.json()

# response
data['response']

 

url불러오고 response를 data에 저장.

# response - docs - doc을 books에 넣어준다

books = []
for d in data['response']['docs']:
    books.append(d['doc'])

books에 필요한 정보 append

# books를 dataFrame

books_df = pd.DataFrame(books)
books_df

books를 dataFrame으로 만들어준다

# json형식으로 저장

books_df.to_json('20s_best_book.json', force_ascii=False)

json형식으로 저장.

 

2. 웹 스크래핑 사용.

 

def get_page_cnt(isbn):
    url = "http://www.yes24.com/Product/Search?domain=BOOK&query={}"
    r = requests.get(url.format(isbn))
    soup = BeautifulSoup(r.text, 'html.parser')
    prd_info = soup.find('a',attrs={'class': 'gd_name'})
    if prd_info == None:
        return ''
    url = "http://www.yes24.com"+prd_info['href']
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    prd_detail = soup.find('div',attrs={'id': 'infoset_specific'})
    prd_tr_list = prd_detail.find_all('tr')
    for tr in prd_tr_list:
        if tr.find('th').get_text() == '쪽수, 무게, 크기':
            return tr.find('td').get_text().split()[0]
    return ''

웹 스크래핑 함수