如何打开由连续数字组成的网页 (http://website/#.html)

0 投票
5 回答
1217 浏览
提问于 2025-04-16 15:54

假设我有这样的代码:

global a
a = 1       
def newre():
    global a
    a += 1

b = str(a)
print b
op = urlopen('http://website/' + b + '.html')
ops = op.read()

这个代码可能不太能正常工作,因为它可能是在一个函数里面。不过我想知道,怎么才能让每次运行这个类的时候,变量b的值比上一次高1呢?

5 个回答

0
from urllib2 import urlopen

def urlIter(url, pages):
    return (url.format(page) for page in pages)

for url in urlIter('http://website/{0}.html', range(1,20)):
    pg = urlopen(url).read()
    # do something with pg

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

2

看了你格式正确的代码,我大概明白你想做什么。我建议你可以用Python的迭代器来实现这个功能。

class pageIter:

     def __init__(self):
          self.a = 0

     def __iter__(self):
          return (self)

     def next(self):
          """ Return the contents of the next page """          
          self.a += 1
          #when no more, raise StopIteration to terminate 
          op = urlopen('http://website/' + str(a) + '.html')
          return op.read()


it = pageIter()
for pageOp in it:
    # do something with the next page until something happens

(或者直接用更简单的方法)

maxNums = ??
for a in range(1, maxNums):
     op = urlopen('http://website/'+str(a)+'.html')
2

你为什么想用全局变量和其他东西呢?其实这很简单,你想做的事情有点像这样。

contents = []
for i in range(10): # or whatever
    url = 'http://website/' + str(i) + '.html'
    content = urlopen(url)
    contents.append(content)

另外,我建议你从一个好的Python教程开始学习。欢迎来到StackOverflow!

撰写回答