Php 使用python利用网页功能
我试图了解这是如何工作的。有一个输入表单,您可以在其中提供url。此表单返回从另一个网站Youtube检索到的信息。因此: 我的第一个也是更有趣的问题是,是否有人知道这个网站如何检索整个语句集 或者,因为现在我使用以下代码: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 +
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。