提问者:小点点

刮网号


import bs4, requests

url = requests.get(f'https://www.marketwatch.com/investing/stock/aapl?mod=over_search')
soup = bs4.BeautifulSoup(url.text,'lxml')

print(soup.find("div",{"class": "intraday__data"}).find("h3",{"class": "intraday__price"}).find("bg-quote"))

输出:

<bg-quote> channel="/zigman2/quotes/202934861/composite,/zigman2/quotes/202934861/lastsale" class="value" field="Last" format="0,0.00" session="pre">141.97</bg-quote>

当我在最后一行的最后一行键入. text时,它给我一个错误,这是错误。我想提取价格,有什么想法吗?

AttributeError Traceback (most recent call last) 

soup = bs4.BeautifulSoup(url.text,'lxml')
print(soup.find("div",{"class": "intraday__data"}).find("h3",{"class": "intraday__price"}).find("bg-quote")).text
 
AttributeError: 'NoneType' object has no attribute 'text'

共3个答案

匿名用户

您正在键入print()print之后的text始终返回None。改为这样做:

print(
    soup.find("div", {"class": "intraday__data"})
    .find("h3", {"class": "intraday__price"})
    .find("bg-quote")
    .text
) # <-- NOT .text here!

打印:

141.77

匿名用户

import requests
from bs4 import BeautifulSoup


def main(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'lxml')
    print(soup.select('.value')[6].text)


main('https://www.marketwatch.com/investing/stock/aapl?mod=over_search')

输出:

141.76

匿名用户

import requests
from bs4 import BeautifulSoup

URL = "https://www.marketwatch.com/investing/stock/aapl?mod=over_search"
page = requests.get(URL)

soup = bs4.BeautifulSoup(page.text)

print(soup.select('.value')[6].text)