• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

3-4-2 게시물 긁어오기 질문드립니다.

18.08.24 16:43 작성 조회수 155

0

#루리웹 로그인하기

import requests

import sys

import io

from bs4 import BeautifulSoup

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')

sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

# 로그인 유저정보

LOGIN_INFO = {

'user_id' : '루리웹아이디',

'user_pw' : '루리웹비번'

}

# Session 생성, with 구문안에서 유지

with requests.Session() as s :

login_req = s.post('https://user.ruliweb.com/member/login_proc', data=LOGIN_INFO)

# # HTML 소스 확인

# print('login_req', login_req.text)

# # Header 확인

# print('header', login_req.headers)

if login_req.status_code == 200 and login_req.ok :

post_one = s.get('http://market.ruliweb.com/read.htm?table=market_ps&page=1&num=4553450&find=&ftext=')

post_one.raise_for_status()

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

# print(soup.prettify)

#p_list = soup.find('table', {'id':'marketread'}) # 1번 안됨

p_list = soup.select_one('table#marketread') # 2번 안됨

#p_list = soup.find_all('p') # 3번 됨

print(p_list)

루리웹 장터 게시글 긁어오기 실습을 하는데,

강사님께서 하신 방법으로는 잘 되나,

이전 강의에서 배웠던 방식으로는 잘 안되서 질문드립니다.

[1번], [2번]으로 주석처리한 방법으로 진행하면

table#marketread의 하위 내용이 전부 긁어와져야 맞다고 생각이 되는데,

두가지 방법 모두 table#marketread의 하위 5개 tr태그중 2가지만 가져오고, 두번쨰 태그는 절반정도만 긁어옵니다.

이 때문에 게시글의 내용을 담고있는 5번째 tr태그에 관한 내용이 없으니,

.find_all()이나, .select()를 해도, none이나 찾을수 없다는 내용만 출력됩니다.

혹시나 하는 마음에 [3번]으로 테스트를 해봤는데, 쓸때없는 내용이 많이 포함되서 그렇지 잘되긴하네요.

==========================

추가로 다른 사이트에서도 시도를 해봤는데, 비슷한 내용으로 상단의 일부 태그만 긁어오고,

정작 필요한 부분을 긁어오질 못해서 제가 이해를 잘못한거라 생각이 됩니다.

어떤 부분을 잘못한걸까요???

답변 1

답변을 작성해보세요.

0

안녕하세요.
보통 긁어 오는 부분이 짤리거나, 잘 못 긁어 오는 경우에는 선택자 부분을 잘 확인하셔야 할 것같습니다.
bs4의 선택자 부분을 자식 선택자로 여러 방법으로 시도하시면서 테스트 해보시면 될 것 같습니다.
http://jpython.blogspot.com/2012/11/beautiful-soup-css-selector.html
위에 링크가 도움이 될 것 같습니다.
감사합니다.