关于python:Urllib2得到乱码而不是页面源

Urllib2 get garbled string instead of page source

本问题已经有最佳答案,请猛点这里访问。

当我使用urllib2抓取网页时,我无法获取页面源,但是一个乱码的字符串,我无法理解它是什么。 我的代码如下:

1
2
3
4
url = 'http://finance.sina.com.cn/china/20150905/065523161502.shtml'
conn = urllib2.urlopen(url)
content = conn.read()
print content

任何人都可以帮我找出什么是错的? 非常感谢。

更新:我认为你可以运行上面的代码来获得我得到的。 以下是我在python中得到的:

{G≤0≤150≤C0≤K≤z≤%E
|?B ?? |?F?oeB?'?? M6?
????????;??????????大号MV: - :]0Z WT6+ Y + LV????VisV:P,Y'
?米P [8-8米3/ ??? Y]???? F |???X?法] S op1M?imm5??克??????K#|??????????????号码:?
(?P?FThq1 ?? N4 ?? P ??? X ?? L D F ??? 6 ?? z?0 [?} ?? z ?? | ?? +?pR"s??LQ??&安培;??克·V[((j??? W1@ - 克8-???'V + KS0?????%???5)

这就是我的预期(使用curl):

1
2
3
4
5
<html>
<head>
<link rel="mask-icon" sizes="any" href="http://www.sina.com.cn/favicon.svg" color="red">
<meta charset="gbk"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />


以下是使用requestsBeautifulSoup获取源信息的可能方法

1
2
3
4
5
6
7
8
9
10
import requests
from bs4 import BeautifulSoup

#Url to request
url ="http://finance.sina.com.cn/china/20150905/065523161502.shtml"
r = requests.get(url)

#Use BeautifulSoup to organise the 'requested' content
soup=BeautifulSoup(r.content,"lxml")
print soup