Python程序打印结果多次

时间:2016-10-22 12:50:57

标签: python

我有一个代码,它使用while循环来打印网页的<a href></a>标记中包含的内容。我可以提取所需的索引以及它们之间的任何内容,也可以打印它。该程序应该只打印一次url,然后继续并增加索引,直到它找到<a href></a>的下一个索引值,打印它们之间的任何内容并继续这样做直到字符串结束,打印在单独的行上找到的每个新URL。这是代码:

text = """ohsfhskfheifhsefis <a href = "fdnsfjsnfsnfns snkfsndfskj"</a>
<a href = "snfksnfsdf"</a>"""

index = 0

a = 0

b = 0

while index < len(text):

    a = text.find('href', index)

    b = text.find('/a', index)

    print(text[a:b])

    index = index + 2

    if index >= len(text):

        print("End")

        break

但是,当我运行程序时,它会出现故障,如图所示。

显然,我使用的逻辑在这里是错误的。我知道还有其他更简单的方法可以完成这项任务,但我没有更复杂的东西,因为我最近刚刚开始学习Python,并希望现在这样做。

On the left is the first part of the Program. On the right is the second.

您还可以清楚地看到空格被遗漏,因为程序会在索引的每个增量处打印网址。

非常感谢任何形式的帮助。

2 个答案:

答案 0 :(得分:1)

您的搜索以index设置为0开始,然后在第22位找到href文字。然后将索引增加到2,再次搜索,再次搜索在22号找到文字。

如果您想搜索以继续过去最后一场比赛,则需要在最后一场比赛后将index设置为位置:

index = a + 1

现在,下一个text.find()调用开始在索引23处搜索。

您还需要测试文本是否

if a < 0 or b < 0:
    break

不要手动搜索这样的文本,而应考虑使用HTML解析器。例如,BeautifulSoup对您的搜索很简单。

答案 1 :(得分:0)

另一种建议:

for token in text.split('href="')[1:]:
    print token.split('"')[0]