python - 使用selenium,用PhantomJS抓取网页后保存为.html后出现中文乱码?
阿神
阿神 2017-04-18 09:46:03
0
3
553

保存的html文档中出现中文乱码:
<meta name="keywords" content="鈽呯敤閽㈢惔璇犻噴鍛ㄦ澃浼︹櫔鏃犱笌浼︽瘮涓嶉€濈粡鍏革紝姊︽兂瀹禯eDragon锛岄挗鐞达紝缁忓吀锛岃交闊充箰">

代码:

from selenium import webdriver
browser = webdriver.PhantomJS( )
url = 'http://music.163.com/#/playlist?id=11362719'
browser.get(url)  # 打开网页
browser.switch_to.frame(browser.find_element_by_xpath("//iframe"))
#title = browser.find_elements_by_xpath('//*[@id="play-count"]')
#title = browser.find_elements_by_xpath('//*tr/@class')  
#print(browser.page_source.encoding('utf-8'))
print(browser.page_source,file=open('C:/Users/welwel/Desktop/source.html','w',encoding='utf-8'))
browser.quit()

1.使用type(browser.page_source)查看类型是str,无法使用。decode转换格式
2.用的是win7下python3.5 的IDLE,使用sys.getdefaultencoding()查看默认编码是‘utf-8’
3.直接使用print(browser.page_source)报错:

Traceback (most recent call last):
  File "C:\Users\welwel\Desktop\wangyi.py", line 8, in <module>
print(browser.page_source)
  File "C:\Python35-32\lib\idlelib\PyShell.py", line 1344, in write
return self.shell.write(s, self.tags)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 55288-55288: Non-BMP character not supported in Tk

这个问题在第一次爬取网页时使用print(browser.page_source,file=open('C:/Users/welwel/Desktop/source.html','w',encoding='utf-8'))
不会报错,但是加在for循环中就会从第二个开始,出现中文乱码,不知是不是bug。有没有遇到过的。

阿神
阿神

闭关修行中......

모든 응답(3)
黄舟

이것을 시도해 보십시오:

으아아아
小葫芦

으아악

小葫芦

좋아, 내 필요는 노래의 댓글과 노래 제목을 크롤링하는 것입니다. 원래는 웹페이지를 크롤링하여 천천히 정규화할 계획이었습니다. 나중에 홀수 웹페이지는 중국어로 정상적이고 짝수는- 번호가 매겨진 웹페이지가 깨져서(크롤링하고 싶습니다. 웹페이지 50개) 반전되었습니다. 이는 win7에 버그가 있고 Linux가 설치되지 않았음을 의미합니다. 요구 사항에 따라 xpath 분석을 사용합니다.
예:
ele_com = browser.find_element_by_xpath("//p[@class='cnt f-brk']")
반환된 데이터는 정상입니다. 여전히 cmd에서 실행 중입니다.
따라서 데이터를 크롤링하려면 모듈에 있는 도구를 사용하면 됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!