2017-10-21 6 views
0

파이썬 버전은 3.6.3입니다. 내 OS는 WIN7입니다. 지금은 아래 웹 사이트에서 한자를 추출하고 있어요 : https://crl.ptopenlab.com:8800/poem/show?3&%25E5%258F%2591%25E7%2594%259F&A718FCB2-CE47-4649-BB46-0E09B169FD59Windows OS에서 python3.x로 Beutifulsoup4를 가져올 수없는 한자

내가 추출물 싶어 요소를 아래의 HTML 코드에 포함 된 문자는 다음과 같습니다

<div id="poemcontent" style="top: 82.4px;"> 
     <div id="title">发生</div> 
     <div class="poembody">发情犹是梦</div> 
     <div class="poembody">生意未能行</div> 
     <div class="poembody">独坐青山下</div> 
     <div class="poembody">还看白日明</div> 

    </div> 

내 파이썬 코드

은 다음과 같습니다

import urllib.request 
res=urllib.request.urlopen("https://crl.ptopenlab.com:8800/poem/show?3&%25E5%258F%2591%25E7%2594%259F&A718FCB2-CE47-4649-BB46-0E09B169FD59").read() 

from bs4 import BeautifulSoup 

soup = BeautifulSoup(res,from_encoding="RTF-8") 

body=soup.body 
print(body.div.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.contents) 

이 코드는 실제로 독점적으로 중국어 문자를 추출하지 않습니다. 한자가 제대로 표시되는지 확인하고 싶습니다. 불행하게도, 그 결과는 내가 기대했던 것이 아니다 : 나는이 목록의 첫 번째 항목을 추출 할 경우

['\n', <div id="title"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"><img height="100px" src="static/images/write.gif" width="100px"/></div>, '\n'] 

, 그것은 같이 표시

<div id="title"></div> 

그래서 그 문제의 표시에는 문자가 없습니다!

비슷한 파이썬 코드를 사용하여 다른 웹 사이트에서 중국어 문자를 추출하려고 시도했는데, 크롤링 한 문자를 정상적으로 표시 할 수 있습니다. 그들 중 누구도 이처럼 행동하지 않았습니다.

몇 가지 인코딩 방법이 변경되었지만 작동하지 않았습니다. 이 문제를 어떻게 해결할 수 있습니까? 감사!

답변

0

poembody 콘텐츠를 가져 오지 않는 이유는 페이지가로드 된 후 AJAX 호출을 통해 모두 생성 되었기 때문입니다. 페이지를 스크랩하면이 콘텐츠가 검색되지 않습니다.

올바른 입력이 주어지면 수동으로 AJAX 호출을 트리거하고 콘텐츠를 수집 할 수 있습니다. 특히 getPoems()으로 전화하십시오.이 경우, subjectuuid의 세 가지 인수가 필요합니다. 이러한 값은 일반 window.location.search에서 파싱됩니다. 제공된 URL의 <head> 태그로 링크 된 자세한 내용은 poem-0.0.76.js 파일을 참조하십시오. 약간의 역 추적으로, 필요한 모든시를 얻기 위해 모든 것을 함께 모을 수 있어야합니다.