return BeautifulSoup AttributeError:“NoneType”对象没有属性“encode”

2024-06-16 15:03:44 发布

您现在位置:Python中文网/ 问答频道 /正文

晚安,为什么我返回“美元”,即将返回“beautifulsoupattributeerror:'NoneType'对象没有属性'encode'”,我做错了什么?我想把这段代码中的美元报价带进来

import
from bs4 import BeautifulSoup
import urllib.request as url

 site = "https://economia.uol.com.br/cotacoes/"
       try:
           url2 = site
           con = url.urlopen(url2, None, 7) 

           if con.status == 200:
               HTML = con.read() 

               soup = BeautifulSoup(HTML, 'html.parser')  

               dolar = re.search(r'Cotacao do Dolar: ',
                                       str(soup.find('div', attrs={'class': 'subtituloGrafico subtituloGraficoValor'})))  
               return dolar

       except Exception as e:

           if str(e) == 'HTTP Error 404: NOT FOUND':
               return 'Error'

           return str(e)

Tags: importurlreturnifhtmlassiteerror
2条回答

很简单。这是:

soup.find('div', attrs={'class': 'subtituloGrafico subtituloGraficoValor'})

因为汤里什么也没找到,所以一个也没有返回。确保你确实在正确地搜索它,它不是动态创建的等等。你知道吗

您还可以按文本搜索并使用BS提取它,而不必显式使用re。你知道吗

正如@Pythonista所说的,因为汤里什么也没找到。我尝试在浏览器中按类搜索您需要的内容,然后发现class="subtituloGrafico subtituloGraficoValor"属于<a>。所以我明白你想要什么。你知道吗

注意:soup.find("h3",{"class":"tituloGrafico"})用于缩小搜索范围

from bs4 import BeautifulSoup
import urllib.request as url
import re

site = "https://economia.uol.com.br/cotacoes/"
def func(site=site):
        try:
            url2 = site
            con = url.urlopen(url2, None, 7) 
            if con.status == 200:
                HTML = con.read() 
                soup = BeautifulSoup(HTML, 'lxml')
                sub = soup.find("h3",{"class":"tituloGrafico"})
                title = sub.findChild("a").text
                dolar = sub.find('a', attrs={'class': "subtituloGrafico subtituloGraficoValor"}).text
                print(title,dolar)
                #dolar = re.search(r'Cotacao do Dolar:(.*?)',text)
                return dolar
        except Exception as e:
            raise e
            if str(e) == 'HTTP Error 404: NOT FOUND':
                return 'Error'
            return str(e)
func()

相关问题 更多 >