zcmlimi 2015-08-11 04:55 采纳率: 50%
浏览 10875
已采纳

Python爬虫爬取网页源代码为空,求问原因&解决方案(向)

代码如下:
import urllib
import urllib2
import re

url ='http://www.yingjiesheng.com/guangzhou-moreptjob-2.html'
req = urllib2.Request(url)
try:
html = urllib2.urlopen(req).read()
print html
except urllib2.HTTPError, e:
print 'The server couldn\'t fulfill the request.'
print 'Error code: ', e.code
except urllib2.URLError, e:
print 'We failed to reach a server.'
print 'Reason: ', e.reason
else:
print 'No exception was raised.'

代码结果如下:
图片说明

求:在爬取网页源代码的时候返回空的原因及解决方案(或解决方向)~求大神指点迷津啊!
        (PS:在处理这个问题的时候,我曾在IDLE上直接敲这段代码运行,有时候可以返回源代码有时候不可以,另外,有时候我把程序运行了几十遍之后,就能返回源代码,这时候我把url的数字2改为3时(即相当下一页),又不可以了,好诡异~~)
  • 写回答

5条回答 默认 最新

  • JPF1024 2015-08-11 07:06
    关注

    代码:

     #!/usr/bin/env python3
    #-*- coding=utf-8 -*-
    
    import urllib3
    
    if __name__ == '__main__':
        http=urllib3.PoolManager()
        r=http.request('GET','http://www.yingjiesheng.com/guangzhou-moreptjob-2.html')
        print(r.data.decode("gbk"))
    

    可以正常抓取。需要安装urllib3,py版本3.43

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • oyljerry 2015-08-11 05:11
    关注

    页面是异步的,ajax方式,所以你请求的时候有时候没有拿到内容就返回了。

    评论
  • JPF1024 2015-08-11 07:09
    关注

    图片说明

    运行截图。

    评论
  • zcmlimi 2015-08-12 05:13
    关注

    感谢好心人的帮忙,虽然最后我用了另外的方式搞定了问题。
    首先,我想说这次问题并不是因为ajax的异步问题,因为该网页貌似没有用到ajax的技术,而且即便用了ajax技术,一般也不会返回为空吧?(京东网有用ajax,我爬过,所以感觉这次问题不是ajax的异步问题)
    其次,最后我换了个编译器(pycharm),并且在Python2.7中用urllib2解决了以上问题,问题的直接原因是编译器问题。另外,鉴于回复中有用urllib3也能解决的答案,所以我觉得这次问题产生的根本原因可能是编译器运行代码时对服务器请求时或得到回复时出了问题,可能是连接中断?或者访问超时?具体原因不明,因为我的代码在python自带的IDLE中,只要一行一行的码上去,然后一行一行的运行是没问题的,一旦写在脚本上,全部代码一次性运行就会出现问题了(有时候把脚本运行几十次也就行了;重启几次IDLE,再运行也行了(好诡异!!!))。
    最后,希望以后能查出真正的原因!

    评论
  • Yates WANG 2015-08-12 09:06
    关注

    上周去比赛..怕第二天代码出问题,前一天晚上写好代码测试好电脑都没敢关机,结果第二天演示时候出错,key error...觉得urllib2这个库有时候很扯..不知道为什么 会不会牵扯到缓存什么的

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 控制面板卸载无权限!!
  • ¥20 vb调用dll报错找不到文件
  • ¥20 SQL如何做交集查询
  • ¥15 unity 绘画方面的问题
  • ¥15 FTP 明明给了权限但是还是550 Permission denied问题
  • ¥20 Java的kafka错误unknowHostException
  • ¥20 gbase 8a没有lisense,需要获取一个lisense
  • ¥15 前端的3d饼图不知道用啥框架做的
  • ¥15 算法问题 斐波那契数 解答
  • ¥15 VS2019 SPY++ 获取句柄操作