Wget saute tout après esperluette (&) j'ai essayé de m'échapper \ & mais cela ne fonctionne pas

Code:

import threading
import urllib.request
import os
import re
import time
import json
import sys

def take():
    a = ["https://itunes.apple.com/us/genre/ios-games-action/id7001?mt=8&letter=A","https://itunes.apple.com/us/genre/ios-games-action/id7001?mt=8&letter=B"]
    for url_file in a:
        url_file = re.sub(r'\&','\&',url_file)
        data = os.popen('wget -qO- %s'% url_file).read()
        if re.search(r'(?mis)paginate\-more\">next',data):
            print ("hi")


take()

Cela devrait imprimer "hi"

Mais puisque wget saute tout après et il lance une sortie vierge.

Comment cela pourrait-il fonctionner?

0
Mounarajan 14 juil. 2015 à 10:12

2 réponses

Meilleure réponse

Le problème auquel vous êtes confronté est que & a une signification particulière dans le shell (et vous appelez un shell via popen): c'est-à-dire pour l'arrière-plan du travail sur le côté gauche de l'esperluette.

Pour contourner cela, vous devez échapper les caractères spéciaux, ou utiliser des guillemets autour de l'URL:

 data = os.popen('wget -qO- "%s"' % url_file).read()
1
umläute 14 juil. 2015 à 07:14

Votre code fonctionne pour moi tel quel. J'utilise python 2.6.x sur Linux. Pouvez-vous mentionner la version de Python que vous utilisez. Utilisez-vous Windows / Linux.

La sortie est

hi
hi

Je vois que vous vous êtes échappé «&» dans votre source.

0
soumen 14 juil. 2015 à 07:29