2015-08-04 1 views
1

Я пытаюсь получить страницу с сайта http://www.francais-thai.com/dicoweb/fran/00012.htmurllib2 не получает такой же HTML строку как обычные браузеры с теми же агентами (ошибка кодирования?)

но в питоне

(есть тайский текст страница)

вот код, который я попробовал: (он должен загрузить страницу)

# -*- coding: utf-8 -*- 
import urllib2 

agents = {'User-Agent':"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36"} 

url = ("http://www.francais-thai.com/dicoweb/fran/00012.htm") 
request = urllib2.Request(url, headers=agents) 
page = urllib2.urlopen(request).read() 


file = open("00012.htm","w") 
file.write(page) 
file.close() 

но страница, которую я получаю этот путь не является то же самое на всех, как светлячок/хром/и т.д. дал мне, когда я показываю источник

здесь страницы я получаю с хромом:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>abeille</title> 
<style type="text/css"> 
<!-- 
body {font-size: medium;} 
.FAG {font-family: Arial, Helvetica, sans-serif; font-weight: bold; color: #000;} 
.FTN {font-family: "Times New Roman", Times, serif; font-weight: normal; color: #000;} 
.PN {font-family: "Times New Roman", Times, serif; font-weight: normal; color: #00F;} 
.PG {font-family: "Times New Roman", Times, serif; font-weight: bold; color: #00F;} 
.TN {font-family: "Angsana New"; font-weight: normal; color: #F00;} 
--> 
</style> 
</head> 
<body lang="fr"> 
<span class="FAG">abeille</span><span class="FTN">........................................................................... </span><span class="PN">\phugn</span><span class="FAG"> - </span><span class="TN">ผึ้ง</span><br> 
</body> 
</html> 

и это Bugged страница, которую я получаю с моим кодом:

<html xmlns="http://www.w3.org/1999/xhtml"> 
਍㰀栀攀愀搀㸀ഀഀ 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
਍㰀琀椀琀氀攀㸀愀戀攀椀氀氀攀㰀⼀琀椀琀氀攀㸀ഀഀ 
<style type="text/css"> 
਍㰀℀ⴀⴀഀഀ 
body {font-size: medium;} 
਍⸀䘀䄀䜀 笀昀漀渀琀ⴀ昀愀洀椀氀礀㨀 䄀爀椀愀氀Ⰰ 䠀攀氀瘀攀琀椀挀愀Ⰰ 猀愀渀猀ⴀ猀攀爀椀昀㬀 昀漀渀琀ⴀ眀攀椀最栀琀㨀 戀漀氀搀㬀 挀漀氀漀爀㨀 ⌀   㬀紀ഀഀ 
.FTN {font-family: "Times New Roman", Times, serif; font-weight: normal; color: #000;} 
਍⸀倀一 笀昀漀渀琀ⴀ昀愀洀椀氀礀㨀 ∀吀椀洀攀猀 一攀眀 刀漀洀愀渀∀Ⰰ 吀椀洀攀猀Ⰰ 猀攀爀椀昀㬀 昀漀渀琀ⴀ眀攀椀最栀琀㨀 渀漀爀洀愀氀㬀 挀漀氀漀爀㨀 ⌀  䘀㬀紀ഀഀ 
.PG {font-family: "Times New Roman", Times, serif; font-weight: bold; color: #00F;} 
਍⸀吀一 笀昀漀渀琀ⴀ昀愀洀椀氀礀㨀 ∀䄀渀最猀愀渀愀 一攀眀∀㬀 昀漀渀琀ⴀ眀攀椀最栀琀㨀 渀漀爀洀愀氀㬀 挀漀氀漀爀㨀 ⌀䘀  㬀紀ഀഀ 
--> 
਍㰀⼀猀琀礀氀攀㸀ഀഀ 
</head> 
਍㰀戀漀搀礀 氀愀渀最㴀∀昀爀∀㸀ഀഀ 
<span class="FAG">abeille</span><span class="FTN">........................................................................... </span><span class="PN">\phugn</span><span class="FAG"> - </span><span class="TN">ผึ้ง</span><br> 
਍㰀⼀戀漀搀礀㸀ഀഀ 
</html> 
਍ 

Я попытался изменить пользовательские агенты, и, наконец, получил точный агент пользователя с помощью Wireshark, но та же «жучки» страница загрузки, а не правой страница

Как я могу получить тот же HTML-текст, что и обычные браузеры с python?

моего предположение об ошибке кодирования (есть тайский на HTML) , но я не могу заставить его работать, я попытался изменить кодирующий и т.д .. но я не могу заставить его работать

ответ

0

страница на самом деле UTF-16 кодируется не UTF-8, так что агент пользователя не имеет значения:

request = urllib2.Request(url) 
response = urllib2.urlopen(request) 

print(response.read().decode("utf-16")) 

Выход:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>abeille</title> 
<style type="text/css"> 
<!-- 
body {font-size: medium;} 
.FAG {font-family: Arial, Helvetica, sans-serif; font-weight: bold; color: #000;} 
.FTN {font-family: "Times New Roman", Times, serif; font-weight: normal; color: #000;} 
.PN {font-family: "Times New Roman", Times, serif; font-weight: normal; color: #00F;} 
.PG {font-family: "Times New Roman", Times, serif; font-weight: bold; color: #00F;} 
.TN {font-family: "Angsana New"; font-weight: normal; color: #F00;} 
--> 
</style> 
</head> 
<body lang="fr"> 
<span class="FAG">abeille</span><span class="FTN">........................................................................... </span><span class="PN">\phugn</span><span class="FAG"> - </span><span class="TN">ผึ้ง</span><br> 
</body> 
</html> 

запрашивает имеет тот же вопрос и используя кодировку, вы можете вернуть кодировку как UTF-16LE:

import chardet 
print chardet.detect(response.read()) 
{'confidence': 1.0, 'encoding': 'UTF-16LE'} 
Смежные вопросы