# open url and get the content
def getUrlContent(url, cityList):
if len(cityList) < 10:
request = urllib2.Request(url)
request.add_header('User-Agent', 'magic-client')
response = urllib2.urlopen(request).read()
print len(response)
return response
else:
return None
def findKeyWords(content):
keyWord = re.compile(r"""(?<=<p>Here is the full list of this year's ranking:</p>).*?(?=<div width="100%">)""", re.DOTALL)
results = keyWord.findall(content)
subKeyWord = re.compile(r"(?<=. ).*?(?=</p>)")
cities = subKeyWord.findall(results[0])
cityFileWrite = open("C:\Users\Administrator\Documents\houdini13.0\pythonFiles\Cities.txt","w")
for city in cities:
city = city.lower()
city = city.replace("’","")
cityFileWrite.write(city + ",")
cityFileWrite.close()
content = getUrlContent(url, cityList)
if content != None:
findKeyWords(content)
cityFileRead.close()
#print "loaded again"
#get different types of data
typesValueKeyWord = re.compile(r'''(?<=<div class="value">\n ).*?(?=\n </div>)''', re.DOTALL)
typesValueResults = typesValueKeyWord.findall(content)[:-1]
typesTitleKeyWord = re.compile(r'''(?<=<div class="caption">\n ).*?(?=\n </div>)''', re.DOTALL)
typesTitleResults = typesTitleKeyWord.findall(content)
del typesTitleResults[-2]
del typesTitleResults[-2]
for i in range(len(typesTitleResults)):
typesTitleResults = typesTitleResults.replace("/","_")
typesTitleResults = typesTitleResults.replace(".","_")
pmValues[typesTitleResults] = typesValueResults
#print pmValues
return histries
def createAttrib(pmHistry):
for key in pmValues.iterkeys():
self.setParms({key : pmValues[key]})
for i in range(len(pmHistry)):
name = "histry%d" % i
self.setParms({name : pmHistry})
def update():
city = getCityName()
#print city
content = findUrlContent(city)
#print content
pmHistry = getPmInformation(content)
createAttrib(pmHistry)
#print "done"
其实现在这个小插件虽然能用了,但还是有些小bug正在调试。问题出在每次新建立这个节点不能直接点击update,需要先打开type properties点apply一下。要不然会报错:'moudel' has no attribute 'update'。 这个问题我估计是生成时脚本加载不完整或者刚生成时Python模块读取不了自身对象。总之还在测试,如果你知道问题在哪,欢迎留言告诉我。