非常感谢你的帮助。我正在尝试编写一个脚本,该脚本将刮掉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")
问题是什么?我不知道在没有错误消息的情况下从哪里开始。提前谢谢。
答案 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
。