數(shù)據(jù)提取的定義
數(shù)據(jù)提取就是從的響應(yīng)中提取我們想要的數(shù)據(jù)的過(guò)程
數(shù)據(jù)分類(lèi)
????????????????????1.非結(jié)構(gòu)化數(shù)據(jù):html等
????????????????????????處理方法:正則表達(dá)式,xpath
????????????????????2.結(jié)構(gòu)化數(shù)據(jù):json,xml等
????????????????????????處理方法:轉(zhuǎn)化為python數(shù)據(jù)類(lèi)型
數(shù)據(jù)提取之json
? ? ? ? ? ? ? ? json字符串或包含json類(lèi)文件對(duì)象 通過(guò) json.loads() 轉(zhuǎn)化為 python數(shù)據(jù)類(lèi)型
? ??????????????python數(shù)據(jù)類(lèi)型 通過(guò) json.dumps() 轉(zhuǎn)化為??json字符串或包含json類(lèi)文件對(duì)象
? ? ? ? ? ?使用json注意點(diǎn):?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.json中的字符串都是雙引號(hào)引起來(lái)的,如果不是雙引號(hào),使用eval:能夠?qū)崿F(xiàn)簡(jiǎn)單的字符串和python類(lèi)型的轉(zhuǎn)化,使用replace:把單引號(hào)替換為雙引號(hào)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.往一個(gè)文件中寫(xiě)入多個(gè)json串,不在是一個(gè)json串,不能直接讀取
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.一行寫(xiě)一個(gè)json串,按照行來(lái)讀取
數(shù)據(jù)提取之xml
? ? ? ? ? ? ? ? xml被設(shè)計(jì)為傳輸和存儲(chǔ)數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容,使用xpath提取
? ? ? ? ? ? ? ? xpath:http://www.lxweimin.com/p/1cb12a4d69fd
? ? ? ? ? ? ? ? 要先安裝lxml第三方模塊
? ? ? ? ? ? ? ? lxml能夠修正HTML代碼,但可能會(huì)改錯(cuò)
? ? ? ? ? ? ? ? ? ? 使用etree.tostring觀察修改之后的html的樣子,根據(jù)修改之后的html字符串寫(xiě)xpath
? ? ? ? ? ? ? ? ? ? lxml能夠接受bytes和str的字符串
? ? ? ? ? ? ? ? ? ? 提取頁(yè)面數(shù)據(jù)的思路
? ? ? ? ? ? ? ? ? ? ? ? 1.先分組,取到一個(gè)包含分組標(biāo)簽的列表
? ? ? ? ? ? ? ? ? ? ? ? 2.遍歷,取其中每一個(gè)進(jìn)行數(shù)據(jù)的提取,不會(huì)造成數(shù)據(jù)對(duì)應(yīng)錯(cuò)亂