使用Python利用网页功能

2024-06-17 07:46:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解这个web site是如何工作的。有一个输入表单,您可以在其中提供url。此表单返回从其他网站(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下面,但没有成功。为什么会这样?

谢谢!你知道吗

Python 2.7.8版


Tags: importwebjsonurl表单youtube网站site
1条回答
网友
1楼 · 发布于 2024-06-17 07:46:17
  1. 可能使用Google Youtube data API。请注意,(目前)只能使用API版本2检索注释-该版本已被弃用。显然在V3中还没有支持。Python客户端库可用,请参见https://developers.google.com/youtube/code#Python

  2. 响应已经是JSON,不需要BS。web服务器似乎需要cookies,因此我建议使用^{},特别是它的会话管理:

    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
    

相关问题 更多 >