在Python中运行基本Web Scrape时出现索引错误

时间:2011-09-06 03:27:03

标签: python beautifulsoup web-scraping

我正在使用Python 2.7。当我尝试运行此代码时,我遇到问题,当函数命中打印findPatTitle [i],并且python返回“索引错误:列表索引超出范围”。我从youtube上的第13个python教程中获取此代码,我很确定代码是相同的,所以我不明白为什么我会遇到范围问题。有什么想法吗?

from urllib import urlopen
from BeautifulSoup import BeautifulSoup
import re

webpage = urlopen('http://feeds.huffingtonpost.com/huffingtonpost/LatestNews').read()

patFinderTitle = re.compile('<title>(.*)<title>')

patFinderLink = re.compile('<link rel.*href="(.*)" />')

findPatTitle = re.findall(patFinderTitle,webpage)
findPatLink = re.findall(patFinderLink,webpage)

listIterator = []
listIterator[:] = range(2,16)

for i in listIterator:
    print findPatTitle[i]
    print findPatLink[i]
    print "\n"

1 个答案:

答案 0 :(得分:0)

如果你的正则表达式设法找到标题和链接标签,你将获得使用findall时匹配字符串的列表。在这种情况下,您可以遍历它们并打印出来。

像:

for title in findPatTitle:
    print title

for link in findPatLink:
    print link

您获得的索引错误是因为您尝试访问2到16之间的元素列表,并且标题或链接中没有16个元素。

注意,listIterator[:] = range(2,16)不是为此目的编写代码的好方法。你可以使用

for i in range(2, 16)
    # use i