2~3주에 한번씩 책을 20권 이상 빌리다 보니 이미 빌린 책인지 아닌지 확인해야 할 일들이 생겼다. 일반 도서는 상관이 없었는데 잡지 같은 경우 구분하기가 상당히 불편했다. 이유는 대여 목록해 잡지의 정보가 제목만 나왔기 때문이다. 이 잡지가 몇월호인지 확인 해보려면 대출 목록에 들어가서 상세 내용을 확인해봐야만 했다. 그게 귀찮아서 내가 빌린 책을 손쉽게 검색 해보자는 취지에서 웹 스크래핑을 해봤다.
아래 코드는 대출 목록페이지에 있는 화면에서 링크를 가져오는 코드이다.
def get_file_list_from_site(data_url: str, cookies: dict):
# 세션 객체 생성
session = requests.Session()
# 인증된 세션으로 데이터 요청
response = session.get(data_url, verify=False, cookies=cookies)
# 데이터 파싱
soup = BeautifulSoup(response.text, 'html.parser')
links = []
td_elements = soup.find_all('td', class_='important mobile-text2')
count = 0
for td in td_elements:
a_tag = td.find('a') # <td> 요소 내의 <a> 태그 찾기
if a_tag:
url = a_tag.get('href')
links.append(url)
count = count + 1
print(f"url = {url}")
print(f"total link = {count}")
return links
- data_url : 대출 목록 페이지 주소
- cookies : 인증을 위한 cookies 값.
- 대출 목록을 보기 위해서는 로그인이 필요하다. 로그인 처리를 위해서 cookies 에 다음과 같은 형태로 JSESSIONID 를 담아줬다.
cookies = {'JSESSIONID': '......................'}
- JSESSIONID 는 웹사이트에 실제로 로그인 한 후에 크롬 개발자 도구에서 확인할 수 있다.
- BeautifulSoup 의 htmlparser 를 이용해서 실제 페이지의 정보를 가져온다. 이렇게 하면 response 에 data_url 페이지의 정보들이 담기게 된다.
- 대출 목록에서 서명의 제목을 클릭하게 되면 책의 상세 페이지로 갈수 있기 때문에 나는 이 때 사용되는 a 태그를 추출을 했다. 실제 html tag 링크는 아래와 같이 담겨져 있다. 그렇기 때문에 class 중 "mobile-text2" 인것을 찾아서 a tag 만 추출을 했다.
따라서 위 메소드가 실행되면 대출 도서의 a href 에 있는 url 들을 전부 모을수 있다.
다음에는 추출한 url 을 기반으로 책으 정보를 추출해 볼 예정이다.
'Development > Python' 카테고리의 다른 글
Python 웹 스크래핑 하기2 (1) | 2024.10.17 |
---|---|
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (0) | 2024.08.27 |
[Python] Blob Storage 에 Connection String 으로 연결하기 (0) | 2024.08.01 |
python 으로 Azure blob storage 연결 (0) | 2024.07.12 |
poetry 설정 및 패키지 추가 (0) | 2024.07.11 |