python爬虫数据寻找过程(解决爬虫异步导致AttributeError: 'NoneType' object has no attribute 'find_all'错误)
前邊寫(xiě)了url的分析
我們爬取想要的數(shù)據(jù),一般是打開(kāi)網(wǎng)站鏈接,用瀏覽器的elements功能對(duì)網(wǎng)頁(yè)標(biāo)簽進(jìn)行數(shù)據(jù)分析,確定想要的數(shù)據(jù)的位置,再在代碼中通過(guò)requests庫(kù)的get和post方式發(fā)起請(qǐng)求,得到返回的內(nèi)容,再用美味湯進(jìn)行數(shù)據(jù)查找,最后保存。
但這是靜態(tài)加載的網(wǎng)站的數(shù)據(jù)分析方式,學(xué)習(xí)別人代碼時(shí)會(huì)出現(xiàn)AttributeError: 'NoneType' object has no attribute 'find_all'的錯(cuò)誤,這是因?yàn)榫W(wǎng)站變了,采用了異步加載的方式(XHR或者js),這就導(dǎo)致你右鍵網(wǎng)頁(yè)查看源代碼和F12中的elements完全不一樣,你繼續(xù)用elements分析就不對(duì)了,因?yàn)閿?shù)據(jù)是動(dòng)態(tài)加載的,你直接在瀏覽器鏈接欄拷貝的地址直接get是get不到動(dòng)態(tài)加載的數(shù)據(jù)的,需要通過(guò)network中的xhr和js,去重新構(gòu)造請(qǐng)求,對(duì)返回的json數(shù)據(jù)進(jìn)行處理,你想要的數(shù)據(jù)就在里邊!
上邊的工作思路是錯(cuò)的,因?yàn)槟玫芥溄邮紫染蛻?yīng)該去判斷數(shù)據(jù)是靜態(tài)的加載還是動(dòng)態(tài)的加載,而不是在敲代碼的過(guò)程中發(fā)現(xiàn)找不到數(shù)據(jù)再去判斷,對(duì)于網(wǎng)上下載的代碼,如果出現(xiàn)AttributeError: 'NoneType' object has no attribute 'find_all'的錯(cuò)誤,往往就是這個(gè)問(wèn)題。
?
總結(jié)
以上是生活随笔為你收集整理的python爬虫数据寻找过程(解决爬虫异步导致AttributeError: 'NoneType' object has no attribute 'find_all'错误)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 云脉高效数字化档案管理
- 下一篇: liunx+python+django框