2017-07-26 120 views
-2

我试图从页面的html文本中获取最后5个字符,并使用它们替换URL中的最后5个字符,然后重试。我需要重复几次。Python urllib模块:遍历URL

这就是我想出的。目前,它连续打印5次相同的URL。

import urllib.request 

prevurl = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345" 
for i in range(1,5): 
    with urllib.request.urlopen(prevurl) as url: 
     s = url.read() 
     prevurl.replace('[-5:]', 's[-5:]') 
    print(prevurl) 
+1

嗯...看看你要替换有什么......你不应该有任何引号字符有 –

+0

似乎删除引号使得语法无效 – tklein

+2

试试这个'prevurl = prevurl.replace( prevurl [: - 5],s [-5:])' – Himal

回答

0

我不明白为什么是负面的。我可以用一些建设性的批评来代替。鼓励学习的好方法。

无论如何,我想我想通了。它需要一些额外的步骤,但按我想要的方式工作。

import urllib.request 

prevurl = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345" 
for i in range(1,400): 
    with urllib.request.urlopen(prevurl) as url: 
     s = url.read().decode("utf-8") 
     n1 = [] 
     u1 = [] 
     for i in s: 
      if i.isdigit(): 
       n1.append(i) 
       n2 = ''.join(n1) 
     for i in prevurl: 
      if i.isdigit(): 
       u1.append(i) 
       u2 = ''.join(u1) 
     if len(n2) != len(u2): 
      prevurl = prevurl.replace(prevurl[-(len(u2)):], n2) 
     else: 
      prevurl = prevurl.replace(prevurl[-(len(n2)):],n2) 

    print(prevurl)