求助:关于python中urllib.urlopen读取网页源代码的问题

有个很奇怪的问题,我要读取一个网站中符合某种结构的所有链接,因此需要先用urllib.urlopen读取网站的源码,然后用正则去匹配其中符合某种结构的所有链接,奇怪的问题... 有个很奇怪的问题,我要读取一个网站中符合某种结构的所有链接,因此需要先用urllib.urlopen读取网站的源码,然后用正则去匹配其中符合某种结构的所有链接,奇怪的问题是,用urllib.urlopen读取源码时有时可以正常读取其中的源码,有时又不行了,这是网络信号问题吗?还是网站有设置什么?比如这个链接:http://pic.315che.com/brand/0-83.htm,就有时只能读取其中的一部分,这是什么问题呢?非常感谢哈! 展开
 我来答
liuwei905
推荐于2016-11-09
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
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'}

这个试试
追问
麻烦写的完整些吧?看的不是很懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waketzheng
推荐于2018-03-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
一般都用requests,很少用urllib
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Final_app
2014-02-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
除了加上header 没事多try一下 有时候就会超时
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式