使用python来利用网页功能

时间:2014-08-16 10:46:01

标签: php python selenium web-scraping zend-dom-query

我想了解这个web site是如何运作的。有一个输入表单,您可以在其中提供网址。此表单返回从其他站点(Youtube)检索的信息。所以:

  1. 我的第一个也是更有趣的问题是,如果有人知道这个网站如何检索整个语句库?

  2. 或者,从现在起我使用以下代码:

    from BeautifulSoup import BeautifulSoup
    import json
    
    urlstr = 'http://www.sandracires.com/en/client/youtube/comments.php?v=' + videoId + '&page=' + str(npage)
    url = urllib2.urlopen(urlstr)
    content = url.read()
    soup = BeautifulSoup(content)
    #parse json
    newDictionary=json.loads(str(soup)) 
    
    #print example
    print newDictionary['list'][1]['username']
    

    但是,我不能在所有页面中进行迭代(当我手动操作时不会发生这种情况)。我已将timer.sleep(30)放在json下面,但没有成功。为什么会这样?

  3. 谢谢!

    Python 2.7.8

1 个答案:

答案 0 :(得分:0)

  1. 可能使用Google Youtube data API。请注意,(目前)评论只能使用API​​的版本2进行检索 - 已经已弃用。显然在V3中还没有支持。可以使用Python客户端库,请参阅https://developers.google.com/youtube/code#Python

  2. 响应已经是JSON,不需要BS。 Web服务器似乎需要cookie,因此我建议使用requests module,特别是其会话管理:

    import requests
    
    videoId = 'ZSzeFFsKEt4'
    results = []
    npage = 1
    session = requests.session()
    while True:
        urlstr = 'http://www.sandracires.com/en/client/youtube/comments.php'
        print "Getting page ", npage
        response = session.get(urlstr, params={'v': videoId, 'page': npage})
        content = response.json()
        if len(content['list']) > 1:
            results.append(content)
        else:
            break
        npage += 1
    
    print results