在使用BeautifulSoup中的find_all函数时,需要先将要抓取的页面读入内存。如果将读取页面的代码放在主函数中,可能会因为函数调用的顺序问题而导致无法正常运行。
以下是解决该问题的示例代码:
from bs4 import BeautifulSoup
import requests
def main():
# 先读取页面
url = 'http://example.com'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
# 然后再调用find_all函数
tags = soup.find_all('a')
for tag in tags:
print(tag)
if __name__ == '__main__':
main()
在这个示例代码中,首先通过requests库读取了一个网站的内容,然后将其传递给BeautifulSoup对象。然后在主函数内调用了find_all函数,成功抓取网页中的所有a标签,并将其打印输出。注意代码中的缩进,它对于解决这个问题非常重要。