为网址创建一个循环,以便我可以抓取网页的网址

时间:2014-09-11 04:55:07

标签: python loops url for-loop

非常感谢你的帮助。我正在尝试编写一个脚本,该脚本将刮掉589个网址并收集这589个页面中的每个网址上的所有网址。 url中唯一改变的是“page =”

之后的数字

这段代码没有给我一个错误信息,但它也没有做任何事情。

for i in xrange(589,1):
    page = urllib2.urlopen("http://www.teapartynation.com/profiles/blog/list?page={}".format(i))
    soup = BeautifulSoup(page.read())
    with io.open('TPNurls.txt', 'w', encoding='utf8') as logfile:
       for link in soup.find_all('a', 'xj_expandable'):
            linklist=(link.get('href'))
            logfile.write(linklist + u"\n")

问题是什么?我不知道在没有错误消息的情况下从哪里开始。提前谢谢。

3 个答案:

答案 0 :(得分:1)

声明

xrange(589, 1)

是不可能的,因为它意味着“以1为增量从589变为1”。循环在开始之前结束。

你或许是指:

xrange(589, 1, -1)

如果您希望从589倒退到1(不包括1)。

或者:

xrange(1, 589)

如果你想继续前进(589除外)。

xrange帮助,语法为:

xrange(start, stop[, step])

答案 1 :(得分:0)

for i in xrange(589,1)

需要

for i in xrange(589,1,-1)

答案 2 :(得分:0)

有几个问题,但这有效:

import urllib2
import io
from BeautifulSoup import BeautifulSoup
for i in xrange(1, 589):
    page = urllib2.urlopen("http://www.teapartynation.com/profiles/blog/list?page={}".format(i))
    soup = BeautifulSoup(page.read())
    with io.open('TPNurls.txt', 'w', encoding='utf8') as logfile:
       for link in soup.findAll('a', 'xj_expandable'):
            linklist=(link.get('href'))
            logfile.write(linklist + u"\n")
  • xrange参数需要颠倒。

  • 您说有589页,但请注意xrange(1, 589)最多只能计588.如果确实有589页,那么您需要使用xrange(1, 590)。这是因为xrange在到达第二个参数之前停止

  • soup.find_all需要替换为soup.findAll