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