2017-12-08 13 views
0

BeautifulSoup라는 라이브러리를 사용하여 웹 사이트의 내용을 다듬 으려합니다.BeautifulSoup는 웹 사이트의 콘텐츠를 보여 줄 수 없습니까?

코드 :

from bs4 import BeautifulSoup 
from urllib.request import urlopen 
html_http_response = urlopen("http://www.airlinequality.com/airport-reviews/jeddah-airport/") 
data = html_http_response.read() 
soup = BeautifulSoup(data, "html.parser") 
print(soup.prettify()) 

출력 :

<html style="height:100%"> 
<head> 
    <meta content="NOINDEX, NOFOLLOW" name="ROBOTS"/> 
    <meta content="telephone=no" name="format-detection"/> 
    <meta content="initial-scale=1.0" name="viewport"/> 
    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/> 
</head> 
<body style="margin:0px;height:100%"> 
    <iframe frameborder="0" height="100%" marginheight="0px" marginwidth="0px" src="/_Incapsula_Resource?CWUDNSAI=9&amp;xinfo=9-57435048-0%200NNN%20RT%281512733380259%202%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%284%2c315%2c0%29%20U19&amp;incident_id=466002040110357581-305794245507288265&amp;edet=12&amp;cinfo=04000000" width="100%"> 
    Request unsuccessful. Incapsula incident ID: 466002040110357581-305794245507288265 
    </iframe> 
</body> 
</html> 

몸 대신 브라우저에서 콘텐츠를 검사 할 때 표시되는 내용이 Iframe 발리가 포함되어 있습니다.

+0

를 업데이트합니다. 어쨌든 "iframe"내부에서 콘텐츠를 가져 오시겠습니까? 그게 당신의 요구 사항입니까 ?? –

+0

안녕하세요, 실제로 몸 안쪽에 무엇이 들어 있는지 알고 싶습니다. 이 URL을 확인하면 "view-source : http : //www.airlinequality.com/airport-reviews/jeddah-airport/" 거기에 너무 많은 데이터가 있습니다. – SAM

+0

사이에있는 모든 콘텐츠를 원하십니까? 및? – imox

답변

1

이 웹 사이트는 쿠키를 사용하여 요청의 유효성을 검사합니다. 처음으로 웹 사이트 인 경우 I'm not Robot 옵션을 확인해야합니다. 따라서 요청 헤더에 incap_ses_415_965359, PHPSESSID, visid_incap_965359, _ga 및 _gid 값을 전달하여 보냅니다.

그래서 Chrome 개발 도구에서 쿠키를 얻어 사전에 저장했습니다.

from bs4 import BeautifulSoup 
import requests 

cookies = { 
    'incap_ses_415_965359':'djRha9OqhshstDcXvPV8cmHCBQGBKloAAAAAN3/D9dvoqwEc7GPEwefkhQ==', 'PHPSESSID':'fjmr7plc0dmocm8roq7togcp92', 'visid_incap_965359':'akteT8lDT1iyST7XJO7wdQGBKloAAAns;aAAQkIPAAAAAACAWbWAAQ6Ozzrln35KG6DhLXMRYnMjxOmY', '_ga':'GA1.2.894579844.151uus2734989', '_gid':"GA1.2.1055878562.1598994989" 
} 
html_http_response = requests.get("http://www.airlinequality.com/airport-reviews/jeddah-airport", cookies=cookies) 
data = html_http_response.text 
soup = BeautifulSoup(data, "html.parser") 
print(soup.prettify()) 

가져 오기 쿠키 브라우저에서 가치와 나는 인쇄 할 때 내가 다른 본문 내용을 얻고 그것을

+0

정말 대단 했어요! +1. – SIM

+0

천재 야, 고마워. 브라우저에서 쿠키를 자동으로 가져 오는 방법이 있습니까? – SAM

+0

MechanicalSoup를 사용해보십시오. https://github.com/MechanicalSoup/MechanicalSoup – skipper21

0

찾고있는 데이터가 아직 존재하지 않습니다.이 페이지에는 Java Jenerated Data가 있습니다. 셀레늄 라이브러리에서 공부해야하며 쉽게 찾을 수 있습니다. 이것은 실제로 페이지를로드하고 예를 들어를 클릭 할 때만 생성하려는 데이터입니다. 검색 버튼을 클릭하십시오 (iframe에서 먼저 선택해야 함).