Php 使用python利用网页功能

Php 使用python利用网页功能,php,python,selenium,web-scraping,zend-dom-query,Php,Python,Selenium,Web Scraping,Zend Dom Query,我试图了解这是如何工作的。有一个输入表单,您可以在其中提供url。此表单返回从另一个网站Youtube检索到的信息。因此: 我的第一个也是更有趣的问题是,是否有人知道这个网站如何检索整个语句集 或者,因为现在我使用以下代码: from BeautifulSoup import BeautifulSoup import json urlstr = 'http://www.sandracires.com/en/client/youtube/comments.php?v=' + videoId +

我试图了解这是如何工作的。有一个输入表单,您可以在其中提供url。此表单返回从另一个网站Youtube检索到的信息。因此:

我的第一个也是更有趣的问题是,是否有人知道这个网站如何检索整个语句集

或者,因为现在我使用以下代码:

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.sleep30放在json下面,但没有成功。为什么会这样

谢谢

Python 2.7.8

可能是用了。请注意,目前只能使用API版本2检索注释,该版本已被弃用。显然V3中还没有支持。Python客户端库可用,请参阅

响应已经是JSON,不需要BS。web服务器似乎需要Cookie,因此我建议使用,尤其是其会话管理:

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

谢谢你的回复。不幸的是,由于YouTube API的限制,它们不会返回所有评论。再次感谢您的关注。当使用videoId=ZSzeFFsKEt4时,脚本将在第2页之后停止。手动执行此操作可以更进一步。这是因为python还是因为应用程序所施加的限制?有什么建议吗?再次感谢。看起来他们的服务器需要cookies。我已更新我的答案,改为使用requests.session。现在它应该检索34页了。我不确定通过API检索的评论数量有多少限制。默认情况下,每个请求有25条评论,您需要按照下一个链接访问所有结果。但这有一个问题,API返回的下一个链接的大小会增加,直到太长为止。这可能是限制因素?嗨@mhawke谢谢你的回答。对于您的最后一条评论,您是对的,下一页标记变得非常大提示:您必须使用gdataurl中发布的orderby=published。