我一直试图从雅虎财经中抓取数据,但每次尝试时都会出现以下错误:-
Traceback (most recent call last):
File "C:\Users\nnarn\PycharmProjects\papaproject\main.py", line 15, in <module>
print(str(parsePrice()))
File "C:\Users\nnarn\PycharmProjects\papaproject\main.py", line 8, in parsePrice
soup=bs4.BeautifulSoup(r.text, "xml")
File "C:\Users\nnarn\AppData\Local\Programs\Python\Python39\lib\site-packages\bs4\__init__.py", line 243, in __init__
raise FeatureNotFound(
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
代码:
import bs4
import requests
from bs4 import BeautifulSoup
def parsePrice():
r=requests.get('https://finance.yahoo.com/quote/FB?p=FB')
soup=bs4.BeautifulSoup(r.text, "xml")
price=soup.find('div',{'class':'D(ib) Mend(20px)'})[0].find('span').text
print(price)
return price
while True:
print(str(parsePrice()))
答案 0 :(得分:0)
BS4 documentation 建议您使用 soup = BeautifulSoup(r.text, 'html.parser')
,因为您下载的页面内容是 HTML,而不是 XML。
答案 1 :(得分:-1)
只需删除“xml”,您的 soup.find
也包含错误。首先 find_all
跨度,然后从列表中选择您需要的:
import bs4
import requests
from bs4 import BeautifulSoup
def parsePrice():
r=requests.get('https://finance.yahoo.com/quote/FB?p=FB')
soup=bs4.BeautifulSoup(r.text)
price=soup.find('div',{'class':'D(ib) Mend(20px)'}).find_all('span')[0].text
print(price)
return price
while True:
print(str(parsePrice()))