Esempio n. 1
0
    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
Esempio n. 2
0
    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