만약에 각기 다른 리스트가 2번 반복 되어서 각각을 반복하여 비교하고 제거하는 코드를 짜려면 어떻해 할까요?

조회수 695회

'''코드'''

import requests
from bs4 import BeautifulSoup
base_url = 'http://web.rtpcompany.com/info/data/'

req = requests.get(base_url)

html = req.text

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

my_titles = soup.select('td > a')


def get_html(url) :
    html = ""
    resp = requests.get(url)
    if resp.status_code == 200 :
        html = resp.text
    return html

for title in my_titles:
    pages = []
    print(title.text)
    pages.append(base_url + title.get('href'))
    print(pages)
    for page in pages:
        c = get_html(page)
        soup = BeautifulSoup(c)
        for td in soup('td > a'):
            result_title = td.get_text()
            print(result_title)

제목에 있는 내용 그대로 입니다.

여러 곳을 방황해서 이것저것 섞인 괴생명체가 된 코드입니다.ㅎㅎ

잘 돌아가긴 하는데, 문제는 4번째 단의 pages에 각각 하나의 리스트에 base url + 자신이 가져온 href 주소를 넣은 것이 두번씩 반복 됩니다. 그래서 아래의 딸려오는 내용도 두번(ㅡㅡ;;)

문제가 뭔지 보니 같은 주소를 가지고 있는 태그가 2개씩 있더군요.

각각의 리스트를 비교하여 하나만 남도록 코드를 짜려하는데 어느 부분에 넣는게 좋을까요? 추천하시는 방법이 있으신가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 음... 일단 내용이 두 번 딸려오는 문제는 get_html()이 재귀적으로 쓰이고 있어서 그런 것 같습니다. get_html() 자체는 정말로 크롤링 가능한 html 값을 뿌리는 것까지만 하고 실제 크롤링 작업은 그 get_html()을 이용해서 별도로 하도록 분리시키는 것이 좋을 듯합니다. 엽토군 2018.8.21 23:53
  • 오오 답변해주셔서 감사합니다. 그런데 답변을 듣고 나니 제가 위의 코드를 잘 못 쓴 거였더군요. 지금 수정했습니다. 다시 한 번 답변해주셔서 감사합니다 ㅎㅎ 알 수 없는 사용자 2018.8.22 15:20

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)