Python:BeautifulSoup4刮取维基百科时出错

问题描述

我是网络爬虫和python的新手,我想编写一个可以抓取Wikipedia并使其变得更快的代码在这里,您只需要输入要搜索内容即可,例如“ Clock”,因此它将到达https://en.wikipedia.org/wiki/Clock并从此处刮取。如果还有其他错误,请告诉我。

GitHub

因此,当我运行代码时,出现以下错误

Traceback (most recent call last):
  File "main.py",line 26,in <module>
    wikibot(url)
  File "main.py",line 25,in wikibot
    print(soup,('p')[i].text)
IndexError: string index out of range

然后,我希望它可以将数据写入文本文件,我认为可以做到

write()

相同
print()

我正在跟踪一个教程,当他演示一个演示时,它运行完美无误。是我的代码错误还是我的程序包出错了?

解决方法

尝试替换GitHub源代码中的行:

for i in range(1,3):
    print(soup,('p')[i].text)

具有:

paragraphs = soup.find_all('p')
for paragraph in paragraphs:
    print(paragraph.text)
    print()

这将打印所有段落。

更新:将输出写入文件

with open('output.txt','w',encoding='utf-8') as f:
    paragraphs = soup.find_all('p')
        for paragraph in paragraphs:
            f.write(paragraph.text)
            f.write('\n\n') # two newlines
,

如果要提取并打印文本而不是for循环,请使用以下方法:

print(soup.get_text())

有关其他方法和用法,请检查文档:Beautiful Soup Documentation