tr의 위치가 다른 경우 파이썬 크롤링 후 list

조회수 872회

안녕하세요.

하기와 같은 소스로 크롤링을 하려고 하는데요.

tr 값이 홀수인 경우의 값과 tr 값이 짝수인 경우의 값이 달르네요.

홀수의 값만 가져와서 list는 만들었는데

짝수의 값을 가져와서 list를 만들고 합쳐서 DataFrame으로 만들려고 하니 너무 어렵네요.

if도 해보고 list를 분리해보기 등 몇일째 했는제 답을 못 찾아서 질문 드립니다.

url = 'http://land.naver.com/article/articleList.nhn?rletTypeCd=A01&tradeTypeCd=A1&hscpTypeCdA01%3AA03%3AA04&cortarNo=2714010200&page=1'

r = requests.get(url) soup = BeautifulSoup(r.text, 'lxml') table = soup.find('table') trs = table.tbody.find_all('tr')

value_list = []

거래, 종류, 확인일자, 매물명, 면적(㎡), 층, 매물가(만원), 연락처

for tr in trs[::2]: tds = tr.find_all('td') cols = [' '.join(td.text.strip().split()) for td in tds] if '_thumb_image' not in tds[3]['class']: # 현장확인 날짜와 이미지가 없는 행 cols.insert(3, '')

print(cols)

거래 = cols[0] 종류 = cols[1] 확인일자 = datetime.strptime(cols[2], '%y.%m.%d.') 현장확인 = cols[3] 매물명 = cols[4].split(' ')[-3] 면적 = cols[5] 공급면적 = re.findall('공급면적(.?)㎡', 면적)[0].replace(',', '') 전용면적 = re.findall('전용면적(.?)㎡', 면적)[0].replace(',', '') 공급면적 = float(공급면적) 전용면적 = float(전용면적) 층 = cols[6] if cols[7].find('호가일뿐 실거래가로확인된 금액이 아닙니다') >= 0: pass # 단순호가 별도 처리하고자 하면 내용 추가 매물가 = int(cols[7].split(' ')[0].replace(',', '')) 연락처 = cols[8]

value_list.append([종류, 확인일자, 매물명, 공급면적, 전용면적, 층, 매물가, 연락처])

cols = ['종류', '확인일자', '매물명', '공급면적', '전용면적', '층', '매물가', '연락처'] df = pd.DataFrame()(value_list, columns=cols)

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 코드 indentation이 안돼있어서 실행이어렵네요.. Demi 2019.1.17 14:45

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

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

(ಠ_ಠ)
(ಠ‿ಠ)