Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Adaptor pt casti

În UE, permis digital de conducato...

Spalatorie auto profesionala in I...

Anxietate si Safety behaviors OCD.
 Conducta DN 800 pe teren construi...

placa video buna pentru redare ca...

in cat timp se activeaza un abona...

Dilema dupa facultate
 Reciclare metale - merita?

Renault Arkana sh sau Sang Yong K...

La multi ani @ceanu1980!

La multi ani @KiloW!
 ChatGPT - Certificat de rezidenta...

Page numbers in Google Docs, dar ...

Prenadez dubios

WhatsApp pe cartela din routerul ...
 

Loop in python merge o singura data

- - - - -
  • Please log in to reply
6 replies to this topic

#1
rares3968

rares3968

    Member

  • Grup: Members
  • Posts: 242
  • Înscris: 08.01.2022
Am un program in python care imi arata ultimele topicuri de aici pe forum. (rss feed, de la forum)
Problema este ca merge o singura data, adica imi arata doar ultimul topic postat (nu trece la urmatorul, ramane asa...)Posted Image
Ce am scris gresit?
import urllib.request
import time
from xml.dom.minidom import parseString
i = 1
time.sleep(1)
file = urllib.request.urlopen('https://forum.softpedia.com/rss/forums/1-softpedia-forum-rss-feed/')
data = file.read()
file.close()
dom = parseString(data)
while True:
titletag = dom.getElementsByTagName('title')[i].toxml()
title=titletag.replace('<title>','').replace('</title>','')
datetag = dom.getElementsByTagName('pubDate')[i].toxml()
date=datetag.replace('<pubDate>','').replace('</pubDate>','')
print('numar:',i,' data:',date,' titlu:',title,)
i = i + 1
time.sleep(300)



#2
blitz09

blitz09

    Member

  • Grup: Members
  • Posts: 425
  • Înscris: 05.11.2007
Python foloseste whitespace pentru a demarca blocurile de instructiuni (in loc de acolade, folosite in majoritatea limbajelor). Daca programelul tau e scris exact asa ar trebui sa nici nu iti mearga, sa iti dea doar o exceptie "Indentationerror: expected an indented block". Poate ai pus ceva optiuni si iti ignora asta, si se executa o singura data, habar nu am de ce ar exista o asemenea optiune de executie.

Cu indentare adaugata oarecum merge. Oarecum pentru ca se termina cu un IndexError. Si nu inteleg care e sensul apelului de functie "sleep", astepti 5 minute ca sa termini? Sau vrei sa scanezi continuu feed-ul?

#3
MikePatts

MikePatts

    Junior Member

  • Grup: Junior Members
  • Posts: 85
  • Înscris: 25.06.2019
Încearcă varianta:
import urllib.request
import time
from xml.dom.minidom import parseString
while True:
file = urllib.request.urlopen('https://forum.softpedia.com/rss/forums/1-softpedia-forum-rss-feed/')
data = file.read()
file.close()
dom = parseString(data)
for i in range(1, dom.getElementsByTagName('title').length):
	 titletag = dom.getElementsByTagName('title')[i].toxml()
	 title=titletag.replace('<title>','').replace('</title>','')
	 datetag = dom.getElementsByTagName('pubDate')[i].toxml()
	 date=datetag.replace('<pubDate>','').replace('</pubDate>','')
	 print('numar:',i,' data:',date,' titlu:',title,)
time.sleep(300)

Oricum în loopul for sunt doar 20+1 elemente (probabil fix din setări) și poți să înlocuiești cu în loc de .lenght (primul e titlul RSS Feed...)

LE: Editorul de pe forum strica indentarea. Vezi aici: https://pastebin.com/AEqpx9be

#4
bbox

bbox

    Member

  • Grup: Members
  • Posts: 725
  • Înscris: 12.05.2005
merge dar time.sleep() este in secunde nu ms

Presupun ca ai pus si time.sleep in bucla si nu ai asteptat 5 min sa apara si al 2-lea topic.

Edited by bbox, 10 January 2022 - 18:54.


#5
rares3968

rares3968

    Member

  • Grup: Members
  • Posts: 242
  • Înscris: 08.01.2022

View Postblitz09, on 10 ianuarie 2022 - 18:25, said:

Python foloseste whitespace pentru a demarca blocurile de instructiuni (in loc de acolade, folosite in majoritatea limbajelor). Daca programelul tau e scris exact asa ar trebui sa nici nu iti mearga, sa iti dea doar o exceptie "Indentationerror: expected an indented block". Poate ai pus ceva optiuni si iti ignora asta, si se executa o singura data, habar nu am de ce ar exista o asemenea optiune de executie.

Cu indentare adaugata oarecum merge. Oarecum pentru ca se termina cu un IndexError. Si nu inteleg care e sensul apelului de functie "sleep", astepti 5 minute ca sa termini? Sau vrei sa scanezi continuu feed-ul?
Initial mie imi afisa ultimul topic postat aici pe forum, nu avea nici o eroare...

Merge varianta scrisa de MikePatts!

Edited by Dany_Darke, 10 January 2022 - 20:20.


#6
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,307
  • Înscris: 10.08.2005

Quote

Ce am scris gresit?
nu ne putem afirma intrucat nu se observa ce instructiune in ce  ramura (scope) este.
adauga liniute -- in loc de spatii/tab-uri cand pui codul forum

Edited by MarianG, 10 January 2022 - 22:18.


#7
MikePatts

MikePatts

    Junior Member

  • Grup: Junior Members
  • Posts: 85
  • Înscris: 25.06.2019

View Postrares3968, on 10 ianuarie 2022 - 19:36, said:

Merge varianta scrisa de MikePatts!
O variantă puțin mai 'pytonică', deși nu sunt cel mai mare specialist:

from urllib.request import urlopen
from xml.dom.minidom import parseString
from time import sleep
while True:
----with urlopen('https://forum.softpedia.com/rss/forums/1-softpedia-forum-rss-feed/') as data:
--------dom = parseString(data.read())
----titluri = dom.getElementsByTagName('title')
----date = dom.getElementsByTagName('pubDate')
----for i, tit in enumerate(titluri[1:], start=1):
--------titlu=tit.toxml().replace('<title>','').replace('</title>','')
--------data = date[i].toxml().replace('<pubDate>','').replace('</pubDate>','')
--------print('numar:',i,' data:',data,' titlu:',titlu,)
----sleep(300)


Înlocuiește '-' cu 'spațiu'

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate