簡體   English   中英

美麗的湯:find()函數

[英]Beautiful Soup: find() function

url = url_stub % (stat_id, starting_year)
page = requests.get(url)
html = BeautifulSoup(page.text.replace('n', ''), 'html.parser')
stat = html.find("div", class_="parsys mainParsys section").find('h3').text

我正在嘗試使用BeautifulSoup對象並使用find()函數,但是我不斷收到“ AttributeError:'NoneType'對象沒有屬性'find'”。 我究竟做錯了什么?

@jasonharper是正確的。 您可以考慮使用異常處理或將該鏈分成多個部分,以檢查是否從html.find("div", class_="parsys mainParsys section")

為了更好地解決此問題,您需要修改代碼。 這將幫助您查找代碼的哪些部分失敗。 但是我也希望將html類縮小到單個html類進行測試,然后如果這是問題之一,找出如何向find函數添加多個類名

先嘗試一下。 如果失敗,請嘗試使用單個html類名稱。

url = url_stub % (stat_id, starting_year)
page = requests.get(url)
html = BeautifulSoup(page.text.replace('n', ''), 'html.parser')

print('before stat')
stat = html.find("div", class_="parsys mainParsys section")
print('stat worked')
print('before data')
data = stat.find('h3').text
print('after data')

編輯:而且class_可能不會稱為class_,而只是class

正如@jasonharper指出的,這是因為第一個.find()找不到任何東西。 為了避免該錯誤,您必須驗證您的第一個和第二個發現是否找到了任何東西:

if html.find("div", class_="parsys mainParsys section"):
     if html.find("div", class_="parsys mainParsys section").find('h3'):
         stat = html.find("div", class_="parsys mainParsys section").find('h3').text
     else:
         stat=None
else:
    stat = None

我偶然發現了您正在使用的相同功能和項目。 您必須更改:

stat = html.find("div", class_="parsys mainParsys section").find('h3').text

stat = html.find("div", class_="parsys mainParsys").find('h3').text

另外,如果您使用的是3.6版本,則必須更新:

import urllib.request
urllib.request.urlretrieve(url, filename)

暫無
暫無

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

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