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天的時日,除了複習專業課...