【发布时间】:2011-08-08 08:35:12
【问题描述】:
我是网络应用程序的新手,所以我不太习惯担心 CPU 限制,但我看起来我会遇到此代码的问题。我在 google 的配额页面中读到,我每天可以使用 6.5 CPU 小时,每分钟 15 CPU 分钟。
谷歌说:
CPU 时间以“秒”为单位报告,这相当于 CPU 周期数 可以在这段时间内由 1.2 GHz Intel x86 处理器执行。实际上 花费的 CPU 周期数会因 App Engine 内部条件的不同而有很大差异, 所以这个数字是为了报告的目的而调整的,使用这个处理器作为参考 测量。
和
每日最高费率CPU 时间 6.5 CPU 小时 15 CPU 分钟/分钟
我想知道的:
此脚本是否超出限制?
(如果是)我怎样才能让它不超过限制?
我使用 urllib 库,我应该使用 Google 的 URL Fetch API 吗?为什么?
绝对有其他有用的评论。
它的作用:
它会抓取(抓取)项目免费电视。我只会完全运行一次,然后用更短更快的脚本替换它。
from urllib import urlopen
import re
alphaUrl = 'http://www.free-tv-video-online.me/movies/'
alphaPage = urlopen(alphaUrl).read()
patFinderAlpha = re.compile('<td width="97%" nowrap="true" class="mnlcategorylist"><a href="(.*)">')
findPatAlpha = re.findall(patFinderAlpha,alphaPage)
listIteratorAlpha = []
listIteratorAlpha[:] = range(len(findPatAlpha))
for ai in listIteratorAlpha:
betaUrl = 'http://www.free-tv-video-online.me/movies/' + findPatAlpha[ai] + '/'
betaPage = urlopen(betaUrl).read()
patFinderBeta = re.compile('<td width="97%" class="mnlcategorylist"><a href="(.*)">')
findPatBeta = re.findall(patFinderBeta,betaPage)
listIteratorBeta = []
listIteratorBeta[:] = range(len(findPatBeta))
for bi in listIteratorBeta:
gammaUrl = betaUrl + findPatBeta[bi]
gammaPage = urlopen(gammaUrl).read()
patFinderGamma = re.compile('<a href="(.*)" target="_blank" class="mnllinklist">')
findPatGamma = re.findall(patFinderGamma,gammaPage)
patFinderGamma2 = re.compile('<meta name="keywords"content="(.*)">')
findPatGamma2 = re.findall(patFinderGamma2,gammaPage)
listIteratorGamma = []
listIteratorGamma[:] = range(len(findPatGamma))
for gi in listIteratorGamma:
deltaUrl = findPatGamma[gi]
deltaPage = urlopen(deltaUrl).read()
patFinderDelta = re.compile("<iframe id='hmovie' .* src='(.*)' .*></iframe>")
findPatDelta = re.findall(patFinderDelta,deltaPage)
PutData( findPatGamma2[gi], findPatAlpha[ai], findPatDelt)
如果我忘记了什么,请告诉我。
更新:
这是关于它将运行多少次以及为什么这有助于回答问题。
每个周期总计
阿尔法:1 1
测试版:16 16
伽玛:~250 ~4000
增量:~6 ~24000
【问题讨论】:
-
@Jon 使用 Regex 解析 HTML 在 Stack Overflow 上是一种罪过。
-
这些不是“限制”,它们是您免费获得的。如果你想运行任何使用大量 CPU 的东西,你将不得不为你的应用程序付费,就像任何其他主机一样。
-
@systempuntoout 哎呀,应该怎么做?
-
别担心,我也用 Regex 编写了许多快速而肮脏的 python 爬虫。 Beautifulsoup 是正确解析和处理 Html 的一种可能方式。
-
@systempuntoout 为什么他们这么糟糕?