-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
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번]으로 테스트를 해봤는데, 쓸때없는 내용이 많이 포함되서 그렇지 잘되긴하네요.
==========================
추가로 다른 사이트에서도 시도를 해봤는데, 비슷한 내용으로 상단의 일부 태그만 긁어오고,
정작 필요한 부분을 긁어오질 못해서 제가 이해를 잘못한거라 생각이 됩니다.
어떤 부분을 잘못한걸까요???
답변을 작성해보세요.
0
좋은사람
지식공유자2018.08.25
안녕하세요.
보통 긁어 오는 부분이 짤리거나, 잘 못 긁어 오는 경우에는 선택자 부분을 잘 확인하셔야 할 것같습니다.
bs4의 선택자 부분을 자식 선택자로 여러 방법으로 시도하시면서 테스트 해보시면 될 것 같습니다.
http://jpython.blogspot.com/2012/11/beautiful-soup-css-selector.html
위에 링크가 도움이 될 것 같습니다.
감사합니다.
답변 1