第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么lxml有時(但不常見)在Python中吐出錯誤?

為什么lxml有時(但不常見)在Python中吐出錯誤?

溫溫醬 2021-03-20 23:19:06
我經(jīng)常lxml在Python中使用模塊從某些網(wǎng)站上抓取數(shù)據(jù),并且我對模塊總體上感到滿意。但是,當(dāng)我嘗試抓取時,有時會lxml.etree.XMLSyntaxError: AttValue: " or ' expected在etree.fromstring()通話中遇到錯誤,但通常不會發(fā)生。我無法弄清楚我經(jīng)??吹皆撳e誤,但是我認(rèn)為每千次甚至上萬次,我都會遇到該錯誤。當(dāng)錯誤發(fā)生并且腳本停止后立即運(yùn)行完全相同的腳本時,我看不到錯誤,并且腳本運(yùn)行正常。為什么會吐出偶爾的錯誤?有什么辦法可以解決這個問題?實例化urllib2.urlopen()函數(shù)時,我也遇到類似的問題,但是由于urllib2最近沒有看到該錯誤,因此我現(xiàn)在無法編寫確切的錯誤消息。
查看完整描述

2 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗 獲得超6個贊

網(wǎng)站是用(通常是無效的)HTML而不是XML編寫的。您不應(yīng)該將HTML視為XML。


使用lxml的HTML解析器,您的問題應(yīng)該消失了:


import urllib2

from lxml import etree


parser = etree.HTMLParser()

tree = etree.parse(urllib2.urlopen(url), parser)

如果您發(fā)現(xiàn)在嘗試讀取無效的HTML時lxml仍然阻塞,那么您將不得不找到一個更寬松的解析器。html5libBeautifulSoup的使用是Python中最寬松(也是最慢)的HTML解析器:


from bs4 import BeautifulSoup


soup = BeautifulSoup(urllib2.urlopen(url), 'html5lib')


查看完整回答
反對 回復(fù) 2021-03-27
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊

我還遇到一個問題,即lxmliterparse()有時會AttValue: ' expected以非常不可預(yù)測的模式拋出。我知道我要發(fā)送的XML是有效的,并且重新運(yùn)行相同的腳本通常會使它工作(或者在完全不同的地方失敗)。

最后,我設(shè)法創(chuàng)建了一個可以重新運(yùn)行的測試用例,它會立即完成或AttValue在看似隨機(jī)的結(jié)果中引發(fā)錯誤。這是我做錯的事情:

我輸入的iterparse()是我自己編寫的類似文件的對象(我正在處理來自請求的HTTP響應(yīng)流,但必須先將其解壓縮)。編寫read()方法時,我作弊并忽略了size參數(shù)。相反,我只是解壓縮一塊固定大小的壓縮字節(jié),然后返回解壓縮后的字節(jié)序列,通常比32k lxml請求要多得多!
我懷疑這會導(dǎo)致lxml內(nèi)部某個地方的緩沖區(qū)溢出,從而導(dǎo)致上述問題。一旦我停止返回比lxml請求的字節(jié)更多的字節(jié),這些隨機(jī)錯誤就會消失。


查看完整回答
反對 回復(fù) 2021-03-27
  • 2 回答
  • 0 關(guān)注
  • 324 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號