def get_webtoon_list(self): # 요일 웹툰 전체가 나와있는 페이지 에서 각각의 웹툰의 # 고유 넘버(title_id), thumbnail url(img_url), 웹툰의 제목(title)을 # 네임드 튜플변수에(webtoon) 할당하고 webtoon_list에 추가해서 # 웹툰 이름(title)순으로 정리된 webtoon_list를 리턴한다. # 요약하면 전체 웹툰의 넘버, 썸네일 이미지 주소, 웹툰 이름을 가진 네임드 튜플의 리스트를 반환 # 결국엔 init 메서드에서 호출된 find_webtoon메서드를 사용하기 위해 필요한 메서드 url = 'http://comic.naver.com/webtoon/weekday.nhn' response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') webtoon_list = set() daily_all = soup.select_one('.list_area.daily_all') days = daily_all.select('div.col') for day in days: items = day.select('li') for item in items: img_url = item.select_one('div.thumb').a.img['src'] title = item.select_one('a.title').get_text(strip=True) url_webtoon = item.select_one('a.title')['href'] parse_result = urlparse(url_webtoon) queryset = parse_qs(parse_result.query) title_id = queryset['titleId'][0] webtoon = utils.Webtoon(title_id=title_id, img_url=img_url, title=title) webtoon_list.add(webtoon) webtoon_list = sorted(list(webtoon_list), key=lambda webtoon: webtoon.title) # 마지막으로 리턴된 웹툰 리스트에는 Webtoon네임드 튜플이 webtoon.title순서로 정렬됨 return webtoon_list
def get_webtoon_list(self): """ 네이버웹툰의 모든 웹툰들을 가져온다 :return: """ url = 'http://comic.naver.com/webtoon/weekday.nhn' response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') webtoon_list = set() daily_all = soup.select_one('.list_area.daily_all') days = daily_all.select('div.col') for day in days: items = day.select('li') for item in items: img_url = item.select_one('div.thumb').a.img['src'] title = item.select_one('a.title').get_text(strip=True) url_webtoon = item.select_one('a.title')['href'] parse_result = urlparse(url_webtoon) queryset = parse_qs(parse_result.query) title_id = queryset['titleId'][0] webtoon = utils.Webtoon(title_id=title_id, img_url=img_url, title=title) webtoon_list.add(webtoon) webtoon_list = sorted(list(webtoon_list), key=lambda webtoon: webtoon.title) # 이곳 확인하기 return webtoon_list
def get_webtoon_list(self): """ 네이버 웹툰의 모든 웹툰들을 가져온다 :return: """ # 1. request를 보내서, response객체를 받아온다.(스크래핑) response = requests.get('http://comic.naver.com/webtoon/weekday.nhn') # 2. bs4를 통해서 response.text를 파싱한다.(파싱) soup = BeautifulSoup(response.text, 'html.parser') # 3. 모든 웹툰의 id, img_url 정보를 적절한 namedtuple 형식을 담은 list로 저장하기 webtoon_columns = soup.select('.list_area.daily_all .col ul') webtoon_list = [ utils.Webtoon(title_id=parse_qs( urlparse( li.select_one('a').attrs.get('href')).query)['titleId'][0], img_url=li.select_one('img').attrs.get('src'), title=li.select_one('img').attrs.get('title')) for col in webtoon_columns for li in col.select('li') ] # 4. 중복값 없애기 all_webtoon_list = list(set(webtoon_list)) # webtoon_list = sorted(list(webtoon_list), key=lambda x: x.title) return all_webtoon_list