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

保存的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。有没有遇到过的。

阿神
阿神

闭关修行中......

répondre à tous(3)
黄舟

Essayez ceci :

print(browser.page_source.encode('utf-8').decode(), file=open("xxx.html","w", encoding='utf-8'))
小葫芦
print(browser.page_source,file=open('C:/Users/welwel/Desktop/source.html','w'))
小葫芦

D'accord, mon besoin est d'explorer les commentaires et les titres des chansons. J'avais initialement prévu d'explorer la page Web et de la régulariser lentement. Plus tard, j'ai découvert que les pages Web impaires étaient normales en chinois, et les pages paires. les pages Web numérotées ont été tronquées (je veux les explorer. 50 pages Web), puis cela a été inversé. Cela signifie qu'il y a un bug sur Win7 et que Linux n'est pas installé. Utilisez l'analyse XPath selon les exigences,
par exemple :
ele_com = browser.find_element_by_xpath("//p[@class='cnt f-brk']")
Les données renvoyées sont normales. Fonctionne toujours sur cmd.
Donc, si vous souhaitez explorer des données, utilisez simplement les outils du module, ne plaisantez pas

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!