簡體   English   中英

從雅虎財經抓取數據

[英]Scraping data from yahoo finance

我一直在嘗試從 yahoo Finance 中抓取數據,但每次嘗試時都會出現以下錯誤:-

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()))

BS4 文檔建議您使用soup = BeautifulSoup(r.text, 'html.parser') ,因為您正在下載的頁面內容是 HTML,而不是 XML。

只需刪除“xml”,您的soup.find也包含錯誤。 首先find_all跨度,然后 select 是您需要的列表:

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()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM