[code="python"]
import urllib2
from BeautifulSoup import BeautifulSoup,Tag
import re
import os
import stat
url_str="http://ispo-mediaservices.com/prj_152/customer/"
headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"}
req =urllib2.Request(url_str,headers=headers)
page=urllib2.urlopen(req)
soup = BeautifulSoup(page,fromEncoding="utf8")
#print unicode(soup.findAll("table")[4])
kk=soup.html.head.title
print kk
[/code]
URL不要换(URL换成http://www.google.com能调通) 谢谢 请赐教
我用的python 2.7.1,beautifulsoup版本是3.2.0-1,运行结果正常,不是代码的问题,可能是beautifulsoup的问题,如果你用的是3.1.X版本,你试一下3.2.X的结果怎么样;若还不行,你就把python换成2.6,beautifulsoup换成3.0.X,因为beautifulsoup从3.1.X开始内部的对HTML的解析由原来的SGMLParser换为HTMLParser,后者对结构不好的文档会发生“malformed start tag”类似的错误,具体可见:http://www.crummy.com/software/BeautifulSoup/3.1-problems.html
你的代码挺好的,我这里可以直接运行:
http://ispo-mediaservices.com/prj_152/customer/
结果:
我用的是:BeautifulSoup-3.0.1.py
python2.5.2
估计是跟python版本有关,你要不,降到2.5.x试试吧。
奇怪了,这样,你把
http://ispo-mediaservices.com/prj_152/customer/
这个页面的结果(纯文本)弄出来看看,有可能是结果就是不对。
打不开页面,那肯定会出错啊。
[quote]对了请问你是 linux环境还是windows环境呢?[/quote]
我是在windows下运行的。
[quote]page=urllib2.urlopen(req) 换成
Python代码 收藏代码
page=urllib2.urlopen(req).read(1024)
就能执行成功返回
ispo media services - boost your business.read(1024) 是不是限定读取大小的? 1024是个什么单位 你知道么?
会不会是因为这个网页以及http://www.163.com 这些网页 html太大,所以存储空间不够才报错的?这个存储空间是占用的哪里的 会不会因为你那里这个空间足够大 所以直接执行就成功了?
你也帮我分析分析原因 谢谢呀 [/quote]
.read(1024),读取前1024个字节.
我觉得不是内存的原因,反而更像是网络原因,比如多长时间超时之内的,如果超时,返回的结果有可能不是标准的html页面,导致你的beautifulsoap解析不了。
你可以直接在:
page=urllib2.urlopen(req)
后边加一行
print page.read()
把页面的内容打出来看看,是不是标准的html页面。