내가 가지고 내가이 스크립트를 최적화 할 수있는 가장 좋은 방법 일 것입니다 무슨 궁금 오전 GAE DB파이썬 스크립트 최적화
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import datetime
__author__ = "Nash Rafeeq"
url = "http://webspace.apiit.edu.my/schedule/timetable.jsp"
viewurl = "http://localhost:8000/timekeeper/intake/checkintake/"
inserturl = "http://localhost:8000/timekeeper/intake/addintake/"
print url
mech = Browser()
try:
page = mech.open(url)
html = page.read()
except Exception, err:
print str(err)
#print html
soup = BeautifulSoup(html)
soup.prettify()
tables = soup.find('select')
for options in tables:
intake = options.string
#print intake
try:
#print viewurl+intake
page = mech.open(viewurl+intake)
html = page.read()
print html
if html=="Exist in database":
print intake, " Exist in the database skiping"
else:
page = mech.open(inserturl+intake)
html = page.read()
print html
if html=="Ok":
print intake, "added to the database"
else:
print "Error adding ", intake, " to database"
except Exception, err:
print str(err)
에 내가 내 유니 웹 사이트에서 데이터를 스크랩하고 삽입 사용하고 다음 스크립트 그래서 나는 그것을 애플 리케이션 엔진 서버에서 실행할 수있다. 그대로, 지금 이상 300 항목을 긁어 내 로컬 컴퓨터에있는 모든 데이터를 삽입 할도 10 분 소요됩니다
데이터를 저장하는 데 사용되는 모델은
class Intake(db.Model):
intake=db.StringProperty(multiline=False, required=True)
#@permerlink
def get_absolute_url(self):
return "/timekeeper/%s/" % self.intake
class Meta:
db_table = "Intake"
verbose_name_plural = "Intakes"
ordering = ['intake']
+1 나누기와 정복을위한 전략 : 놓칠 수 없음! – jldupont
하나의 URL에서 긁어 모으고 있습니다. 스크래핑되는 것은 300 개가 넘는 옵션 목록입니다. 그래서 만약 내가 그것을 두 가지 일이 될 수있는 일로 나눈다면. 나는 긁어 모으기위한 것과 삽입을위한 하나를 추측하고있다. 할당량 제한을 초과하지 않고도이 작업을 수행 할 수 있습니까? 또는 다른 방법으로 최적화 할 수 있습니다. 여기 멍청한 멍청한 녀석이 내게 곰이 되라. –
붙여 넣은 코드에서 for 루프 내부에서 반복되는 요청을하고있다. 그래서 하나의 페치가 아니다. –