2023年七月二十五號bug總結

2021-08-21 18:35:40 字數 2174 閱讀 8633

1、為什麼json.load出來的資料順序和之前的不一樣

進行json_code之前的陣列有排序或者有key值  json資料會自動根據key進行排序 所以要想json跟陣列順序一致 要進行 array_values處理 即是變成索引陣列 

對json物件進行遍歷可以用. 或者

2.url中帶有callback=***會對返回的json資料有影響,解析的時候去掉url中的callback

3.with open('movie.jsonline', 'a', encoding='utf8') as f:

window下預設檔案的解碼格式gbk,而寫入的時候用的是utf-8,需要指定檔案編碼格式

4.將多行json儲存為json檔案報錯

解決方法:儲存為jsonline格式

5.對於貼吧的資料,用xpath獲取不到

貼吧網頁中的**實際上是被注釋過的,推測:1、真正實現頁面功能元素被藏在json中;2、**載入完後有json實現了注釋功能。

解決方法有三種:

(1)需要用正則抓取

(2)或者直接解開注釋

html_new = response.content.decode().replace(r'', '"')

html_new = html_new.encode()

(3)遇到這種情況,可以試下用舊的瀏覽器請求頭,返回的頁面就不是這種把內容藏在注釋裡面的

6、用正則爬取網頁的時候,需要先去掉空格,需要去掉多餘的部分

dz = re.sub("「|」", "\"", div)

dz = re.sub("|

||\s","", dz)

dz = re.sub("…", "...", dz)

7.在執行多程序的時候報錯

the "freeze_support()" line can be omitted if the program

is not going to be frozen to produce an executable.

8.多程序無法封裝到裝飾器中使用死迴圈

這個跟multiprocessing的原理有關,也涉及到python中pickling的一些實現機制。

首先要說明multiprocessing模組現在有多種實現原理,類unix系統預設使用fork,原理在於建立process並啟動的時候進行一次fork,然後子程序執行process中指定的函式,它可以繼承建立程序時記憶體中的物件,因此可以指定各種物件給子程序如函式、閉包、socket等

而python2中windows作業系統的實現spawn,每次重新啟動乙個全新的python程序。以及python3中forkserver的實現(在multiprocessing初始化的時候通過fork建立乙個forkserver的程序,forkserver程序不再執行後續的**,而是等待請求;所有後續建立multiprocessing程序時,都連線forkserver,由forkserver進行fork,產生乙個「乾淨」的程序來作為新程序),這兩種實現並不繼承當前執行環境中的物件,所以需要使用的物件必須通過pickling的方法傳遞給子程序。

另外,multiprocessing中的pool物件,它的原理在於預先建立好許多程序,然後從主程序中接受任務。這些任務因為不是在建立程序(fork)時建立出的,所以必須通過pickling的機制傳遞給子程序。multiprocessing.queue和multiprocessing.pipe也同樣是使用pickling模組在程序間傳遞python物件。

接下來就要說一下pickling了,pickling模組可以將python物件序列化成位元組流,再反序列化回到python物件。但是它是有一定限制的,並不是所有的物件都可以進行序列化。函式和類在pickling中是不能「直接」序列化的,它們在pickling中序列化的原理在於將函式和類變為:package.module.func_name這樣的字串,即模組路徑 + 函式/類名的形式。這就要求反序列化的時候:

這個模組可以被import

import後的這個模組中有這個全域性名稱

而且全域性名稱代表的值就是傳遞的值。

解決方法:

老老實實手動將函式源**改寫

二零一五年七月二十一 工作總結

二零一五年七月二十一 工作總結 今日的總結 遇到的問題 學到的經驗 明日的計畫 今天開始寫 書店管理系統 完全是用不熟悉的知識去操作,邊做邊學習,一開始我還不是很適應,但我正在學習這種工作方式,我正在學習,我正在進步。剛開始接觸時,對這個小專案的需求還不是很明白,和隊友討論和分析了一下午,期間有不明...

二零一五年七月二十七 工作總結

二零一五年七月二十七 工作總結 今日的總結 遇到的問題 學到的經驗 明日的計畫 今天的學習主要是對昨天的html,css,js 資料結構和函式 基礎知識學習的回顧。進而今天對js模組dom的學習。對js function,string,object,number,null 五種基本型別了解的還不是很...

二零一三年七月十四

看了看自己的微博,從六月二十日到七月十四日,這段時間沒有繼續進度走。沒有套種間作,主要是複習了一下專業課考試,可能還是有些矛盾,害怕自己真的會掛科,對於乙個經常不上課的同學來說。還是沒有把時間安排的很好,其實有些事情,不能聽別人怎麼說,只有自己親自一試才能體會。這段時間,26天的時日,除了複習專業課...