|
kotenok gav |
|
|
|
Последний раз редактировалось kotenok gav 21.11.2018, 14:18, всего редактировалось 1 раз.
Решил создать бота для Википедии. Написал код:
#!/usr/bin/env python
# coding: utf-8
import pywikibot, requests
def main(name):
site=pywikibot.Site()
page=pywikibot.Page(site, name)
text=page.text
textnew=[]
while True:
try:
index1=text.index("{{не переведено 5")
try:
index2=text.index("{{нп5")
index=min(index1,index2)
except:
index=index1
except:
try:
index2=text.index("{{нп5")
index=index2
except:
break
textnew.append([0, text[:index]])
text=text[index:]
index=text.index("}}")
template=["не переведено 5"]
vertical=-1
for i in range(index):
if text[i]=="|":
if vertical==-1:
vertical=i
else:
template.append(text[vertical+1:i])
vertical=i
template.append(text[vertical+1:index])
try:
text=text[index+2:]
except:
text=""
textnew.append(template)
textnew.append([0, text])
for q in range(len(textnew)):
i=textnew[q]
if i[0]!=0:
if i[3]=="":
prefix="en"
else:
prefix=i[3]
if i[4]=="":
intername=name
else:
intername=i[4]
intername=intername.split()
intername="_".join(intername)
request="https://"+prefix+".wikipedia.org/w/api.php?action=query&titles="+intername+"&prop=langlinks&lllimit=500&format=json"
try:
#json with interwikis
jwi=requests.get(request).json()
for i in jwi['query']['pages'].keys():
for j in jwi['query']['pages'][i]['langlinks']:
if j['lang']=='ru':
interwiki=j['*']
try:
inter=interwiki
if i[2]=="":
textnew[q]=[0,"[["+i[1]+"|"+inter+"]]"]
else:
textnew[q]=[0, "[["+i[2]+"|"+inter+"]]"
except:
pass
except:
pass
text=""
for i in textnew:
if i[0]==0:
text+=i[1]
else:
text+="{{"+i[0]+"|"+i[1]+"|"+i[2]+"|"+i[3]+"|"+i[4]+"}}"
page.text=text
page.save(u"Проверено, не переведены ли ссылки.")
if __name__=="__main__":
main(u"Участник:Well very well/Черновик")
Почему он ломается на 69 строке?
|
|
|
|
 |
|
kotenok gav |
|
|
|
Последний раз редактировалось kotenok gav 21.11.2018, 14:23, всего редактировалось 1 раз.
Выдает ошибку при запуске python pwb.py bot.py: Traceback (most recent call last): File "pwb.py", line 257, in <module> if not main(): File "pwb.py", line 250, in main run_python_file(filename, [filename] + args, argvu, file_package) File "pwb.py", line 118, in run_python_file exec(compile(source, filename, 'exec', dont_inherit=True), File "./scripts/userscripts/interbot.py", line 69 except: ^ SyntaxError: invalid syntax <type 'exceptions.SyntaxError'> CRITICAL: Closing network session.
|
|
|
|
 |
|
mihaild |
|
|
|
При синтаксических ошибках как правило часто надо смотреть и на предыдущие строчки. В вашем случае - внимательно посмотрите на 68ю.
|
|
|
|
 |
|
kotenok gav |
|
|
|
А, я закрывающую скобку забыл... Спасибо!
|
|
|
|
 |
|
rockclimber |
|
|
SyntaxError: invalid syntax Хотите заниматься программированием - английский таки придется выучить: https://translate.google.ru/#en/ru/invalid%20syntaxСинтаксис какой-то из команд неверный. Либо в той строке, либо вокруг, или со скобками напутали, или еще миллион причин (в общем случае).
|
|
|
|
 |
|
kotenok gav |
|
|
|
Так я знаю, что значит SyntaxError: invalid syntax. Просто я не видел конкретное местонахождение ошибки.
|
|
|
|
 |
|
mihaild |
|
|
|
Если непонятно, где именно ошибка - можно попробовать удалить часть соседних строк и проверить, останется ли она.
|
|
|
|
 |