问题描述
import urllib2from BeautifulSoup import BeautifulSoup,Tagimport reimport osimport staturl_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.titleprint kkURL不要换(URL换成http://www.google.com能调通) 谢谢 请赐教 问题补充:iihero 写道
解决方案
我用的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
解决方案二:
引用page=urllib2.urlopen(req) 换成Python代码 收藏代码 1. page=urllib2.urlopen(req).read(1024) page=urllib2.urlopen(req).read(1024)就能执行成功返回 <title>ispo media services - boost your business</title>.read(1024) 是不是限定读取大小的? 1024是个什么单位 你知道么?会不会是因为这个网页以及http://www.163.com 这些网页 html太大,所以存储空间不够才报错的?这个存储空间是占用的哪里的 会不会因为你那里这个空间足够大 所以直接执行就成功了?你也帮我分析分析原因 谢谢呀 .read(1024),读取前1024个字节.我觉得不是内存的原因,反而更像是网络原因,比如多长时间超时之内的,如果超时,返回的结果有可能不是标准的html页面,导致你的beautifulsoap解析不了。你可以直接在:page=urllib2.urlopen(req)后边加一行print page.read()把页面的内容打出来看看,是不是标准的html页面。
解决方案三:
引用对了请问你是 linux环境还是windows环境呢?我是在windows下运行的。
解决方案四:
打不开页面,那肯定会出错啊。
解决方案五:
奇怪了,这样,你把http://ispo-mediaservices.com/prj_152/customer/ 这个页面的结果(纯文本)弄出来看看,有可能是结果就是不对。
解决方案六:
估计是跟python版本有关,你要不,降到2.5.x试试吧。
解决方案七:
你的代码挺好的,我这里可以直接运行:http://ispo-mediaservices.com/prj_152/customer/结果:<title>ispo media services - boost your business</title>我用的是:BeautifulSoup-3.0.1.pypython2.5.2