求助:关于python中urllib.urlopen读取网页源代码的问题
有个很奇怪的问题,我要读取一个网站中符合某种结构的所有链接,因此需要先用urllib.urlopen读取网站的源码,然后用正则去匹配其中符合某种结构的所有链接,奇怪的问题...
有个很奇怪的问题,我要读取一个网站中符合某种结构的所有链接,因此需要先用urllib.urlopen读取网站的源码,然后用正则去匹配其中符合某种结构的所有链接,奇怪的问题是,用urllib.urlopen读取源码时有时可以正常读取其中的源码,有时又不行了,这是网络信号问题吗?还是网站有设置什么?比如这个链接:http://pic.315che.com/brand/0-83.htm,就有时只能读取其中的一部分,这是什么问题呢?非常感谢哈!
展开
4个回答
展开全部
def getUrlRespHtml(url):
heads = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset':'GB2312,utf-8;q=0.7,*;q=0.7',
'Accept-Language':'zh-cn,zh;q=0.5',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'John',
'Keep-Alive':'115',
'Referer':url,
'User-Agent':'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.14) Gecko/20110221 Ubuntu/10.10 (maverick) Firefox/3.6.14'}
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
req = urllib2.Request(url)
opener.addheaders = heads.items()
respHtml = opener.open(req).read()
return respHtml.decode('gbk').encode('utf-8')
给你一个返回页面数据的函数试试,这个主要是模拟了火狐浏览器去抓取数据,因为有些网站不希望机器人抓取他的数据,这是可能会出现没有返回值的情况。这个函数加了个头,来模拟浏览器浏览网页的行为。
追问
非常感谢您!我按照您的代码运行了以下,报异常:
HTTPError: HTTP Error 503: Service Unavailable
请问这是什么问题呢?麻烦您了
2014-02-25
展开全部
request = urllib2.Request(url,headers = header)
加上
header = {'Accept-Charset':'GBK,utf-8;q=0.7,*;q=0.3','User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16'}
这个试试
加上
header = {'Accept-Charset':'GBK,utf-8;q=0.7,*;q=0.3','User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16'}
这个试试
追问
麻烦写的完整些吧?看的不是很懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般都用requests,很少用urllib
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了加上header 没事多try一下 有时候就会超时
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询