問題解決:TypeError: unsupported format string passed to NoneType.__format__
寫在前面
今天看部落格的時候,有位小夥伴反應我之前的文章爬取軟科排名的程式碼不能用了。
軟科大學排名傳送門(11.17更新): https://blog.csdn.net/weixin_44578172/article/details/109340255
於是我又執行了一下之前的程式碼發現確實是不能用了,而且會報錯就是這樣↓
問題分析
為了幫助各位小夥伴理解,我將上面的報錯翻譯了一下就是這樣的:傳遞給NoneType的格式字串不受支援。
這是因為我們在對網站內容進行爬取的時候,如果爬取的對應位置沒有內容,python爬蟲獲取的值為 NoneType(<class ‘NoneType’>),又因為format格式化輸出不支援NoneType型別,所以結果當然報錯。
之後我看了網站的原始碼,發現確實有一些不一樣,就是td標籤中內容之前有了更多的空白(我大意了啊,沒有閃~),如下圖:
發現了這一點爬蟲人的警覺性湧上來了。我們知道string方法的作用是用來獲取目標路徑下第一個非標籤字串,得到的是個字串(不知道的小夥伴現在也知道了哈),但現在前面有很多空白,所以.string之後我們得到的也就是空白即NoneType。好了,現在我們知道問題的原因了,那麼解決方案如下
問題解決
用text方法代替string方法即可。text的作用是用來獲取目標路徑下的子孫非標籤字串,返回的是字串。然後我們在用.strip方法去掉頭尾空白就可以完美解決了。效果圖如下:
PS:關於string和text的區別,不太明白的小夥伴可以再查一查資料,我後面也會再整理些資料把text,get_text,string,strings等的區別給大家一一介紹
本篇完,如有錯誤歡迎指出~
相關文章
- 求助:TypeError: unsupported format string passed to NoneType.__format__ErrorORMNone
- Error format not a string literal and no format arguments解決方案ErrorORM
- TypeError: Descriptors cannot not be created directly問題的解決Error
- Xamarin中Unsupported major.minor version 52.0問題解決
- .NET String.Format 方法 執行緒安全問題ORM執行緒
- 關於Unsupported major.minor version 52.0報錯問題解決方案
- 解決「問題」,不要解決問題
- C# String.FormatC#ORM
- C# string Format示例C#ORM
- opencv遇到NULL pointer(NULL array pointer is passed) 解決方案OpenCVNull
- JAVA中String format的用法JavaORM
- Uncaught TypeError: external_echarts_.helper.createTextStyle is not a functionat Object.seriesModel.layoutInstance.ondraw問題的解決ErrorEchartsFunctionObject
- 報錯求助:Unsupported locator strategy: -ios predicate stringiOS
- 錯誤:Dx unsupported class file version 52.0(解決)
- 解決問題
- 連結字串String.prototype.format字串ORM
- 發現問題,解決問題
- Unsupported major.minor version 51.0 錯誤解決方案
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- 千份位Javascript Thousand Separator / string formatJavaScriptORM
- JAVA String.format 方法使用介紹JavaORM
- C# String.Format格式說明C#ORM
- c#之string.format方法示例C#ORM
- php中出現Strict Standards: Only variables should be passed by reference in的解決方法PHP
- 解決 TypeError: Type aliases cannot be used with isinstance(). 辦法Error
- tar包解壓not in gzip format的解決辦法ORM
- 提問題比解決問題更重要
- String.format VS. StrSubstitutor VS. NamedParameterJdbcTemplateORMJDBC
- java 字串格式化String.format()使用Java字串格式化ORM
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決