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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...