• 使用python抓取知乎日报的API数据


    使用 urllib2 抓取数据时,最简单的方法是:

    import urllib2, json
    def getStartImage():
        stream = urllib2.urlopen('http://news-at.zhihu.com/api/3/start-image/1080*1776')
        start_image = json.load(stream)
        start_image = json.dumps(start_image, encoding='utf-8')
        return start_image
    

    使用urllib2.urlopen打开参数中给出的url,返回一个 instance(匿名的object)。
    因为这个链接本该返回的是json数据,所以可以用json库提供的json.load方法将对象实例解析成一个字典,直接return的话,返回的是一个字典转化成的字符串。使用json.dumps()将dict转换成一个json对象,参数中encoding='utf-8',指定编码格式。

    但是这种方法往往会遇到 HTTP Error: 403 Forbidden,因为网站禁止爬虫抓去该网站的数据。可以在请求中添加 http header,伪装成一个浏览器发出的请求。这里需要用到 urllib2 提供的一个类Reuqest:

    urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
    

    这个类是一个url请求的抽象化,其具体的使用细节可以参照这里,在这里就不说了。

    import urllib2, json
    # 设置header
    headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6)Gecko/20091201 Firefox/3.5.6'}
    
    def getStartImage():
        req = urllib2.Request(url = 'http://news-at.zhihu.com/api/3/start-image/1080*1776', headers = headers)
        stream = urllib2.urlopen(req)
        start_image = json.load(stream)
        start_image = json.dumps(start_image, encoding='utf-8')
        return start_image
  • 相关阅读:
    sharepoint 2010 stsadm 用法
    感知机 python 代码实现 统计学习方法
    rails 3 使用 cucumber 和rspec 進行 測試
    通过jQuery源码学习javascript(二)
    通过jQuery源码学习javascript(三)
    Javascript 风格向导(终结)
    Javascript 风格向导
    网页小工具(学习中国象棋)
    Linux 内核编码风格
    小议Javascript
  • 原文地址:https://www.cnblogs.com/zhanglun/p/4038529.html
Copyright © 2020-2023  润新知