urllib2 erreur aucun hôte donné
EDIT:(RÉSOLU) Quand je lis les valeurs de mon fichier d'un retour à la ligne char est de s'ajouter sur la fin.(\n) c'est le fractionnement de ma demande chaîne à ce point.
Je pense que c'est à faire avec la façon dont j'ai sauvé les valeurs dans le fichier, en premier lieu. Merci beaucoup.
J'ai le code suivant:
results = 'http://www.myurl.com/'+str(mystring)
print str(results)
request = urllib2.Request(results)
request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)')
opener = urllib2.build_opener()
text = opener.open(request).read()
Qui est dans une boucle.
après que la boucle a courir quelques fois str(mystring) des changements pour donner un autre ensemble de résultats.
Je peux boucle, le script autant de fois que j'aime garder la valeur de str(mystring) constante, mais chaque fois que je change la valeur de str(mystring), je reçois un message d'erreur indiquant aucun hôte lorsque le code tente de construire l'ouvreur.
opener = urllib2.build_opener()
Quelqu'un peut-il aider s'il vous plaît?
TIA,
Paul.
EDIT:
Plus de code ici.....
import sys
import string
import httplib
import urllib2
import re
import random
import time
def StripTags(text):
finished = 0
while not finished:
finished = 1
start = text.find("<")
if start >= 0:
stop = text[start:].find(">")
if stop >= 0:
text = text[:start] + text[start+stop+1:]
finished = 0
return text
mystring="test"
d={}
with open("myfile","r") as f:
while True:
page_counter=0
print str(mystring)
try:
while page_counter <20:
results = 'http://www.myurl.com/'+str(mystring)
print str(results)
request = urllib2.Request(results)
request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)')
opener = urllib2.build_opener()
text = opener.open(request).read()
finds = (re.findall('([\w\.\-]+'+mystring+')',StripTags(text)))
for find in finds:
d[find]=1
uniq_emails=d.keys()
page_counter = page_counter +1
print "found this " +str(finds)"
random.seed()
n = random.random()
i = n * 5
print "Pausing script for " + str(i) + " Seconds" + ""
time.sleep(i)
mystring=next(f)
except IOError:
print "No result found!"+""
mystring
lorsque vous changer?c'est juste un autre terme de recherche. tous sont assez uniformes, qu'ils sont des mots simples. Je peux lancer le script en off avec n'importe quelle valeur j'aime dans mystring. le problème se pose lorsque j'essaie de modifier la valeur par le biais de mon code
Pourriez-vous veuillez donner un exemple complet, il est impossible de deviner ce que le problème est sans voir ce que votre code ne
Toutes les valeurs de travail. Aucune valeur unique rompt le code. La loi de modification de la valeur semble pour le casser. Je suis arrivé à la ligne qui produit l'erreur par le débogage. J'ai édité mon code, nous l'espérons donner une image plus claire. Merci beaucoup.
oups. j'ai déclaré deux fois page_counter....... l'édition..
OriginalL'auteur Paul Tricklebank | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Dans la boucle while, la configuration de résultats pour quelque chose qui n'est pas une url:
résultats = 'myurl+str(mystring)'
Il devrait probablement être
results = myurl+str(mystring)
Par le façon, il semble y avoir aucun besoin de tout le casting de la chaîne (
str()
), vous n'avez:(élargi sur demande)
print str(foo)
: dans ce cas, str() n'est jamais nécessaire. Python est toujours impriméfoo's
représentation de chaîneresults = 'http://www.myurl.com/'+str(mystring)
. C'est aussi inutile;mystring
est déjà une chaîne de caractères, donc'http://www.myurl.com/' + mystring
suffirait.print "Pausing script for " + str(i) + " Seconds"
. Ici, vous obtiendrez une erreur sansstr()
puisque vous ne pouvez pas faire de chaîne + int. Cependant,print "foo", 1, "bar"
fonctionne. Commeprint "foo %i bar" % 1
etprint "foo {0} bar".format(1)
(voir ici)Encore, vous avez la
+str(..)
trucs à l'intérieur des guillemets. Ça va pas le faire une concaténation de chaîne.oui, je suis conscient de cela. Le vrai code qui ne fonctionne pas. Je vais modifier ça maintenant... je ne suis pas sûr de ce que tu veux dire par tout le casting de la chaîne. Je serais reconnaissant si vous pouviez me montrer une meilleure façon. TIA.
J'ai trouvé le problème et c'est mu propre faute. Le fichier que j'obtiens les valeurs de mystring de a \n à la fin de chaque ligne quand je suis en train de lire. C'est le fractionnement de ma demande chaîne à ce point.
La prochaine étape est d'accepter votre propre réponse. :))
OriginalL'auteur Junuxx
J'ai trouvé la réponse. C'est comme suit....
Les valeurs de mystring ont été lues à partir d'un fichier.
Dans le script que j'ai écrit pour écrire le fichier, je l'ouvre avec "w" au lieu de "wb".
Chaque ligne du fichier terminée par un caractère de saut de ligne "/n".
Quand machaine a été ajouté à la chaîne de la demande de la nouvelle ligne a été créée dans le milieu de la chaîne de demande.[1]
Cela n'aurait jamais été évident à partir de mon code car je l'ai changé pour poster ici dans un effort pour cacher l'url réelle je suis aide à obtenir mes résultats.[2]
Mon url qui ressemble plus à de ce.....
Myurl.com/mystring/otherstuff/page_counter/morestuff.htm
L' /n d'être lu à partir du fichier épissé l'adresse de ma page et a donné urllib problèmes......
[1] j'utilise windows. Il ajoute beaucoup de choses invisibles pour les fichiers texte. Si j'avais ouvert le fichier pour écrire avec "wb" au lieu de "w" le contenu aurait été écrit sans l'invisible /n
[2] toujours poster votre code complet enfants. Les bonnes gens de stackoverflow ne peux pas vous aider, sauf qu'ils peuvent voir ce que vous faites.....
Merci beaucoup à tous, j'espère que cela aide quelqu'un à un certain point.
Paul.
OriginalL'auteur Paul Tricklebank