版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
python實(shí)習(xí)報(bào)告(共7篇)python實(shí)習(xí)報(bào)告(共7篇)篇:Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)習(xí)報(bào)告實(shí)用標(biāo)準(zhǔn)文案Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)習(xí)報(bào)告精彩文檔實(shí)用標(biāo)準(zhǔn)文案目錄一、選題背景二、爬蟲(chóng)原理爬蟲(chóng)歷史和分類四、常用爬蟲(chóng)框架比較五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè).2爬取數(shù)據(jù).3數(shù)據(jù)整理、轉(zhuǎn)換4數(shù)據(jù)保存、展示5技術(shù)難點(diǎn)關(guān)鍵點(diǎn).六、精彩文檔實(shí)用標(biāo)準(zhǔn)文案一、選題背景二、爬蟲(chóng)原理三、爬蟲(chóng)歷史和分類四、常用爬蟲(chóng)框架比較Scrapy框架:Scrapy框架是一套比較成熟的Python爬蟲(chóng)框架,是使用Python開(kāi)發(fā)的快速、高層次的信息爬取框架,可以高效的爬取web頁(yè)面并提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy應(yīng)用范圍很廣,爬蟲(chóng)開(kāi)發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等。Crawley框架:Crawley也是Python開(kāi)發(fā)出的爬蟲(chóng)框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。Portia框架:Portia框架是一款允許沒(méi)有任何編程基礎(chǔ)的用戶可視化地爬取網(wǎng)頁(yè)的爬蟲(chóng)框架。newspaper框架:newspaper框架是一個(gè)用來(lái)提取新聞、文章以及內(nèi)容分析的Python爬蟲(chóng)框架。Python-goose框架:Python-goose框架可提取的信息包括:文章主體內(nèi)容;文章主要圖片;文章中嵌入的任heYoutube/Vimeo視頻;元描述;元標(biāo)簽精彩文檔實(shí)用標(biāo)準(zhǔn)文案五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè)data['rating_people_num'][i])f.write("%s"%data['movie_author'][i])f.write("")f.write("")f.write("")f.write("")f.write("第2篇:Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)習(xí)報(bào)告.Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)習(xí)報(bào)告..目錄一、選題背景二、爬蟲(chóng)原理三、爬蟲(chóng)歷史和分類四、常用爬蟲(chóng)框架比較五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù)).1分析網(wǎng)頁(yè)2爬取數(shù)據(jù)3數(shù)據(jù)整理、轉(zhuǎn)換4數(shù)據(jù)保存、展示5技術(shù)難點(diǎn)關(guān)鍵點(diǎn)六、總結(jié)一、選題背景二、爬蟲(chóng)原理三、爬蟲(chóng)歷史和分類四、常用爬蟲(chóng)框架比較Scrapy框架:Scrapy框架是一套比較成熟的Python爬蟲(chóng)框架,是使用Python開(kāi)發(fā)的快速、高層次的信息爬取框架,可以高效的爬取web頁(yè)面并提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy應(yīng)用圍很廣,爬蟲(chóng)開(kāi)發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等。Crawley框架:Crawley也是Python開(kāi)發(fā)出的爬蟲(chóng)框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。Portia框架:Portia框架是一款允許沒(méi)有任何編程基礎(chǔ)的用戶可視化地爬取網(wǎng)頁(yè)的爬蟲(chóng)框架。newspaper框架:newspaper框架是一個(gè)用來(lái)提取新聞、文章以及容分析的Python爬蟲(chóng)框架。Python-goose框架:Python-goose框架可提取的信息包括:文章主體容;文章主要圖片;文章中嵌入的任heYoutube/Vimeo視頻;元描述;元標(biāo)簽..五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè)#獲取html源代碼def__getHtml():data=pageNum=1pageSize=0try:while(pageSize#headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.11(KHTML,likeGecko)Chrome/23.0.1271.64Safari/537.11',#'Referer':None#注意如果依然不能抓取的話,這里可以設(shè)置抓取的host#}#opener=urllib.request.build_opener()#opener.addheaders=[headers]url="https://movie.douban./top250?start="+str(pageSize)+"&filter="+str(pageNum)#data['html%s'%i]=urllib.request.urlopen(url).read().decode("utf-8")..data.append(urllib.request.urlopen(url).read().decode("utf-8"))pageSize+=25pageNum+=1print(pageSize,pageNum)exceptExceptionase:raiseereturndata2爬取數(shù)據(jù)def__getData(html):title=#電影標(biāo)題#rating_num=#評(píng)分range_num=#排名#rating_people_num=#評(píng)價(jià)人數(shù)movie_author=#導(dǎo)演data={}#bs4解析htmlsoup=BeautifulSoup(html,"html.parser")forliinsoup.find("ol",attrs={'cla':'grid_view'}).find_all("li"):title.append(li.find("span",cla_="title").text)#rating_num.append(li.find("div",..cla_='star').find("span",cla_='rating_num').text)range_num.append(li.find("div",cla_='pic').find("em").text)#spans=li.find("div",cla_='star').find_all("span")#forxinrange(len(spans)):#ifxindex=str.find("主")if(index==-1):index=str.find("...")print(li.find("div",cla_='pic').find("em").text)if(li.find("div",cla_='pic').find("em").text==210):index=60#print("aaa")#print(str[4:index])movie_author.append(str[4:index])..data['title']=title#data['rating_num']=rating_numdata['range_num']=range_num#data['rating_people_num']=rating_people_numdata['movie_author']=movie_authorreturndata3數(shù)據(jù)整理、轉(zhuǎn)換def__getMovies(data):f=open('F://douban_movie.html','w',encoding='utf-8')Crawley框架:Crawley也是Python開(kāi)發(fā)出的爬蟲(chóng)框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。Portia框架:Portia框架是一款允許沒(méi)有任何編程基礎(chǔ)的用戶可視化地爬取網(wǎng)頁(yè)的爬蟲(chóng)框架。newspaper框架:newspaper框架是一個(gè)用來(lái)提取新聞、文章以及內(nèi)容分析的Python爬蟲(chóng)框架。3.Python和Java、PHP、C、C#、C++等其他語(yǔ)言的對(duì)比?4.簡(jiǎn)述解釋型和編譯型編程語(yǔ)言?5.Python解釋器種類以及特點(diǎn)?6.位和字節(jié)的關(guān)系?7.b、B、KB、MB、GB的關(guān)系?11.python遞歸的最大層數(shù)?12.求結(jié)果:v1=1or3v2=1and3v3=0and2and1v4=0and2or1v5=0and2or1or4v6=0orFlaseand113.ascii、unicode、utf-8、gbk區(qū)別?14.字節(jié)碼和機(jī)器碼的區(qū)別?15.三元運(yùn)算規(guī)則以及應(yīng)用場(chǎng)景?16.列舉Python2和Python3的區(qū)別?17.用一行代碼實(shí)現(xiàn)數(shù)值交換:a=1b=218.Python3和Python2中int和long的區(qū)別?19.xrange和range的區(qū)別?20.文件操作時(shí):xreadlines和readlines的區(qū)別?21.列舉布爾值為False的常見(jiàn)值?29.Python的可變類型和不可變類型?30.求結(jié)果:v=dict.fromkeys(['k1','k2'],)v[‘k1’].append(666)print(v)v[‘k1’]=777print(v)31.求結(jié)果:defnum():return[lambdax:i*xforIinrange(4)]print([m(2)forminnum()])32.列舉常見(jiàn)的內(nèi)置函數(shù)?33.filter、map、reduce的作用?34.一行代碼實(shí)現(xiàn)9*9乘法表35.如何安裝第三方模塊?以及用過(guò)哪些第三方模塊?39.求結(jié)果:a.[i%2foriinrange(10)]b.(i%2foriinrange(10))40.求結(jié)果:a.1or2b.1and2c.142.如何實(shí)現(xiàn)“1,2,3”變成[‘1’,’2’,’3’]?43.如何實(shí)現(xiàn)[‘1’,’2’,’3’]變成[1,2,3]?44.比較:a=[1,2,3]和b=[(1),(2),(3)]以及b=[(1,),(2,),(3,)]的區(qū)別?45.如何用一行代碼生成[1,4,9,16,25,36,49,64,81,100]?46.一行代碼實(shí)現(xiàn)刪除列表中重復(fù)的值?47.如何在函數(shù)中設(shè)置一個(gè)全局變量?48.logging模塊的作用?以及應(yīng)用場(chǎng)景?49.請(qǐng)用代碼簡(jiǎn)答實(shí)現(xiàn)stack。50.常用字符串格式化哪幾種?51.簡(jiǎn)述生成器、迭代器、可迭代對(duì)象以及應(yīng)用場(chǎng)景?52.用Python實(shí)現(xiàn)一個(gè)二分查找的函數(shù)。53.談?wù)勀銓?duì)閉包的理解?54.os和sys模塊的作用?56.如何使用python刪除一個(gè)文件?57.談?wù)勀銓?duì)面向?qū)ο蟮睦斫猓?8.Python面向?qū)ο笾械睦^承有什么特點(diǎn)?59.面向?qū)ο笊疃葍?yōu)先和廣度優(yōu)先是什么?60.面向?qū)ο笾衧uper的作用?61.是否使用過(guò)functools中的函數(shù)?其作用是什么?62.列舉面向?qū)ο笾袔聞澗€的特殊方法,如:__new__、__init__63.如何判斷是函數(shù)還是方法?64.靜態(tài)方法和類方法區(qū)別?65.列舉面向?qū)ο笾械奶厥獬蓡T以及應(yīng)用場(chǎng)景66.1、2、3、4、5能組成多少個(gè)互不相同且無(wú)重復(fù)的三位數(shù)67.什么是反射?以及應(yīng)用場(chǎng)景?68.metacla作用?以及應(yīng)用場(chǎng)景?69.用盡量多的方法實(shí)現(xiàn)單例模式。70.裝飾器的寫(xiě)法以及應(yīng)用場(chǎng)景。71.異常處理寫(xiě)法以及如何主動(dòng)跑出異常(應(yīng)用場(chǎng)景)72.什么是面向?qū)ο蟮膍ro73.isinstance作用以及應(yīng)用場(chǎng)景?74.寫(xiě)代碼并實(shí)現(xiàn):76.json序列化時(shí),默認(rèn)遇到中文會(huì)轉(zhuǎn)換成unicode,如果想要保留中文怎么辦?77.什么是斷言?應(yīng)用場(chǎng)景?78.有用過(guò)withstatement嗎?它的好處是什么?79.使用代碼實(shí)現(xiàn)查看列舉目錄下的所有文件。80.簡(jiǎn)述yield和yieldfrom關(guān)鍵字。2.單引號(hào)中的字符串可以包含雙引號(hào),雙引號(hào)中的字符串可以包含單引號(hào),而不需要使用轉(zhuǎn)義字符。另外3個(gè)引號(hào)所包圍的字符可以作為注釋,還可以作為格式化的字符串,該字符串可以不再一行,格式化后行尾會(huì)自動(dòng)轉(zhuǎn)化為“n”轉(zhuǎn)義字符。3.在Python中可以使用“”將較長(zhǎng)的語(yǔ)句分成幾行來(lái)寫(xiě),但是注意每行后面不可以有#注釋?;蛘呖梢允褂脠A括號(hào)將較長(zhǎng)的語(yǔ)句分行,每行后面可以使用#注釋。4.類型間轉(zhuǎn)換hex():將整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串,包含前綴“0x”oct():將整數(shù)轉(zhuǎn)換為八進(jìn)制字符串,包含前綴“0o”注:string模塊中有string.atoi(x,base=10),類似int(),但是可以選擇變換后的進(jìn)制5.math模塊中數(shù)學(xué)函數(shù):hypot(x,y):求直角三角形的斜邊長(zhǎng)度,x和y為兩個(gè)直角邊長(zhǎng)度f(wàn)mod(x,y):求x/y的余數(shù),等同于x%yceil(x):求不小于x的最大整數(shù)floor(x):求不大于x的最小整數(shù)fabs(x):求x的絕對(duì)值exp(x):求e的x次冪pow(x,y):求x的y次冪,等同于x**ylog10(x):求x以log10為底的對(duì)數(shù)sqrt(x):求x的平方根pi:求pi的值6.字符串操作string.capitalize():將字符串第一個(gè)字母大寫(xiě)string.count(x):獲得字符串中某字符串的數(shù)目string.find(x):獲得字符串中某子字符串的起始位置string.isalnum():是否僅包含0~9、A~Z、a~zstring.isalpha():是否僅包含A~Z、a~zstring.isaldigit():是否僅包含0~9string.islower()string.isupper()string.lower()string.upper()string.ipace()string.istitle():字符串中所有單詞是否首字母大寫(xiě)string.title()string.join(x):將string插入x中的每?jī)蓚€(gè)字符之間string.swapcase():大小寫(xiě)字母轉(zhuǎn)換string.split(x):利用分割字符串的單詞(默認(rèn)是space)len(string)7.格式化字符串%f%d%s%o:八進(jìn)制整數(shù)%x:十六進(jìn)制整數(shù)注:r"xxxxx"或者R"xxxxx"表示原始字符串,常用語(yǔ)正則表達(dá)式或者路徑表示中,其間沒(méi)有轉(zhuǎn)義字符,均是正常字符。8.列表listlist.append(x):追加成員xlist.count(x):參數(shù)x出現(xiàn)的次數(shù)list.extend(x):list1+list2無(wú)法改變list1,只能返回一個(gè)新的list,但是list2.extend(list2)函數(shù)可以改變list1的值list.index(x):獲得x在list中的位置list.insert(index,x):在index處插入xlist.pop(index):刪除索引為index的成員list.remove(x):刪除值為x的成員list.reverse()list.sort()list.clear()注:tuple的操作與list類似,但是不包含可修改元組的操作。9.字典dictdict.clear()dict.copy(x):將字典x拷貝給dictdict.get(key):等同于dict[k]dict.has_key(key):是否包含key鍵dict.items():獲得鍵-值對(duì)組成的列表dict.keys():獲得鍵組成的列表dict.values():獲得值組成的列表dict.pop(key)dict.update(x):利用字典x更新原字典10.文件操作open(filename,mode,bufsize)filename:要打開(kāi)的文件名mode:打開(kāi)模式(r是只讀,w是替換寫(xiě),a是追加寫(xiě),+是讀寫(xiě)等)bufsize:緩沖區(qū)大小,可以默認(rèn)file.read():整個(gè)文件讀入字符串中file.readlines():整個(gè)文件讀入列表中file.readline():某行讀入字符串中file.write(x):寫(xiě)入字符串file.writelines(x):寫(xiě)入列表xfile.close().11.函數(shù)參數(shù)調(diào)用函數(shù)可以同時(shí)使用按順序傳遞參數(shù),以及關(guān)鍵字傳遞參數(shù)等,但是必須注意按順序傳遞的參數(shù)要位于按關(guān)鍵字傳遞的參數(shù)之前,而且不能有重復(fù)的情況發(fā)生。例如:defsample(x,y,z):pamysum(1,z=5,y=6)#okmysum(z=6,y=7,3)#error使用可變長(zhǎng)參數(shù)的函數(shù),將其所有參數(shù)保存在一個(gè)元組里,在函數(shù)中可以使用for循環(huán)來(lái)處理,聲明一個(gè)可變長(zhǎng)參數(shù)的函數(shù)只需用*開(kāi)頭定義一個(gè)參數(shù)即可。12.局部/全局變量局部作用域內(nèi)的變量的改變并不影響全局作用域內(nèi)的變量,除非通過(guò)引用的方式傳遞參數(shù)。如果要在函數(shù)內(nèi)使用函數(shù)外的變量,可以在變量名前使用global關(guān)鍵字。例如:deffunc(x):globalareturnx+a13.模塊查找路徑導(dǎo)入模塊時(shí),python解釋器首先在當(dāng)前目錄中查找導(dǎo)入的模塊;如果未找到,解釋器會(huì)從sys模塊中的path變量指定的目錄查找導(dǎo)入模塊;如果均未找到,則會(huì)出錯(cuò)。importsyssys.path在腳本中可以向sys.path添加查找路徑,例如可以在.py中如下:importosimportsysmodulepath=os.getcwd()+?module?#module是當(dāng)前目錄下的module子目錄sys.path.append(modulepath)importmymodule#mymodule在module子目錄中************14.dir(x)可以獲得導(dǎo)入模塊中的所有定義的名字和函數(shù)等。importsysdir(sys)當(dāng)不使用參數(shù)時(shí),該函數(shù)將返回當(dāng)前腳本的所有名字列表。15.模塊包包可以看成是出于同一個(gè)目錄中的模塊,在python中首先使用目錄名,然后再使用模塊名導(dǎo)入所需要的模塊。在包的每個(gè)目錄(包括子目錄)中都必須包含一個(gè)“__init__.py”的文件,該文件甚至可以是一個(gè)空文件,僅用于表示該目錄為一個(gè)包。在__init__.py中設(shè)置__all__變量和包初始化所需的代碼,可以保證在from中使用*時(shí)名字的正確導(dǎo)入。fromA.BimportaimportA.B.a有了包的概念可以很好地解決模塊查找路徑的問(wèn)題,只要將所有的模塊放在當(dāng)前目錄中的某個(gè)文件夾內(nèi)(子目錄),然后在子目錄內(nèi)新建一個(gè)__init__.py文件即可,而不需將子目錄的路徑添加到sys.path中。第6篇:Python學(xué)習(xí)總結(jié)Python總結(jié)目錄Python總結(jié)1前言2(一)如何學(xué)習(xí)Python2(二)一些Python免費(fèi)課程推薦4(一)如何學(xué)習(xí)Python學(xué)習(xí)Python大致可以分為以下幾個(gè)階段:1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法等,基礎(chǔ)過(guò)的很快,基本上1~2周時(shí)間就能過(guò)完了,我當(dāng)時(shí)是在這兒看的基礎(chǔ):Python簡(jiǎn)介|菜鳥(niǎo)教程2.看完基礎(chǔ)后,就是做一些小項(xiàng)目鞏固基礎(chǔ),比方說(shuō):做一個(gè)終端計(jì)算器,如果實(shí)在找不到什么練手項(xiàng)目,可以在Codecademy知乎專欄5.Python庫(kù)是開(kāi)發(fā)者利器,用這些庫(kù)你可以做很多很多東西,最常見(jiàn)的網(wǎng)絡(luò)爬蟲(chóng)、自然語(yǔ)言處理、圖像識(shí)別等等,這些領(lǐng)域都有很強(qiáng)大的Python庫(kù)做支持,所以當(dāng)你學(xué)了Python庫(kù)之后,一定要第一時(shí)間進(jìn)行練習(xí)。如何尋找自己需要的Python庫(kù)呢?推薦我之前的一個(gè)回答:如何找到適合需求的Python庫(kù)?6.學(xué)習(xí)使用了這些Python庫(kù),此時(shí)的你應(yīng)該是對(duì)Python十分滿意,也十分激動(dòng)能遇到這樣的語(yǔ)言,就是這個(gè)時(shí)候不妨開(kāi)始學(xué)習(xí)Python數(shù)據(jù)結(jié)構(gòu)與算法,Python設(shè)計(jì)模式,這是你進(jìn)一步學(xué)習(xí)的一個(gè)重要步驟:faif/python-patterns7.當(dāng)度過(guò)艱難的第六步,此時(shí)選擇你要研究的方向,如果你想做后端開(kāi)發(fā),不妨研究研究Django,再往后,就是你自己自由發(fā)揮了。(二)一些Python免費(fèi)課程推薦以下課程都為免費(fèi)課程1.python零基礎(chǔ)相關(guān)適用人群:Python零基礎(chǔ)的初學(xué)者、Web開(kāi)發(fā)程序員、運(yùn)維人員、有志于從事互聯(lián)網(wǎng)行業(yè)以及各領(lǐng)域應(yīng)用Python的人群?瘋狂的Python:快速入門(mén)精講?零基礎(chǔ)入門(mén)學(xué)習(xí)Python?玩轉(zhuǎn)Python語(yǔ)言?Python語(yǔ)言程序設(shè)計(jì)?程序設(shè)計(jì)入門(mén)?可汗學(xué)院公開(kāi)課:計(jì)算機(jī)科學(xué)?python入門(mén)到精通?Python交互式編程入門(mén)的課程主頁(yè)?Python交互編程入門(mén)(第2部分)的課程主頁(yè)2.pythonweb方向PythonDjango快速Web應(yīng)用開(kāi)發(fā)入門(mén)3.python爬蟲(chóng)Python實(shí)戰(zhàn):一周學(xué)會(huì)爬取網(wǎng)頁(yè)4.python數(shù)據(jù)分析方向數(shù)據(jù)分析實(shí)戰(zhàn)基礎(chǔ)課程(三)Python爬蟲(chóng)需要哪些知識(shí)?要學(xué)會(huì)使用Python爬取網(wǎng)頁(yè)信息無(wú)外乎以下幾點(diǎn)內(nèi)容:1、要會(huì)Python2、知道網(wǎng)頁(yè)信息如何呈現(xiàn)3、了解網(wǎng)頁(yè)信息如何產(chǎn)生4、學(xué)會(huì)如何提取網(wǎng)頁(yè)信息第一步Python是工具,所以你必須熟練掌握它,要掌握到什么程度呢?如果你只想寫(xiě)一寫(xiě)簡(jiǎn)單的爬蟲(chóng),不要炫技不考慮爬蟲(chóng)效率,你只需要掌握:?????數(shù)據(jù)類型和變量字符串和編碼使用list和tuple條件判斷、循環(huán)使用dict和set你甚至不需要掌握函數(shù)、異步、多線程、多進(jìn)程,當(dāng)然如果想要提高自己小爬蟲(chóng)的爬蟲(chóng)效率,提高數(shù)據(jù)的精確性,那么記住最好的方式是去系統(tǒng)的學(xué)習(xí)一遍Python,去哪兒學(xué)習(xí)?Python教程假設(shè)已經(jīng)熟悉了最基礎(chǔ)的Python知識(shí),那么進(jìn)入第二步:知道網(wǎng)頁(yè)信息如何呈現(xiàn)?你首先要知道所需要抓取的數(shù)據(jù)是怎樣的呈現(xiàn)的,就像是你要學(xué)做一幅畫(huà),在開(kāi)始之前你要知道這幅畫(huà)是用什么畫(huà)出來(lái)的,鉛筆還是水彩筆...可能種類是多樣的,但是放到網(wǎng)頁(yè)信息來(lái)說(shuō)這兒只有兩種呈現(xiàn)方式:1、HTML(HTML簡(jiǎn)介)2、JSON(JSON簡(jiǎn)介)HTML是用來(lái)描述網(wǎng)頁(yè)的一種語(yǔ)言JSON是一種輕量級(jí)的數(shù)據(jù)交換格式假設(shè)你現(xiàn)在知道了數(shù)據(jù)是由HTML和JSON呈現(xiàn)出來(lái)的,那么我們緊接著第三步:數(shù)據(jù)怎么來(lái)?數(shù)據(jù)當(dāng)然是從服務(wù)器反饋給你的,為什么要反饋給你?因?yàn)槟惆l(fā)出了請(qǐng)求?!癏i~,服務(wù)器我要這個(gè)資源”“正在傳輸中...”“已經(jīng)收到HTML或者JSON格式的數(shù)據(jù)”這個(gè)請(qǐng)求是什么請(qǐng)求?要搞清楚這一點(diǎn)你需要了解一下http的基礎(chǔ)知識(shí),更加精確來(lái)說(shuō)你需要去了解GET和POST是什么,區(qū)別是什么。也許你可以看看這個(gè):淺談HTTP中Get與Post的區(qū)別博客園很高興你使用的是Python,那么你只需要去掌握好快速上手知乎專欄知乎--Python學(xué)習(xí)路徑及練手項(xiàng)目合集(四)Python爬蟲(chóng)進(jìn)階爬蟲(chóng)無(wú)非分為這幾塊:分析目標(biāo)、下載頁(yè)面、解析頁(yè)面、存儲(chǔ)內(nèi)容,其中下載頁(yè)面不提。1.分析目標(biāo)所謂分析就是首先你要知道你需要抓取的數(shù)據(jù)來(lái)自哪里?怎么來(lái)?普通的網(wǎng)站一個(gè)簡(jiǎn)單的POST或者GET請(qǐng)求,不加密不反爬,幾行代碼就能模擬出來(lái),這是最基本的,進(jìn)階就是學(xué)會(huì)分析一些復(fù)雜的目標(biāo),比如說(shuō):淘寶、新浪微博登陸以及網(wǎng)易云的評(píng)論信息等等。2.解析頁(yè)面解析頁(yè)面主要是選擇什么庫(kù)或者那些庫(kù)結(jié)合能使解析速度更快,可能你一開(kāi)始你通過(guò)種種地方了解到了bs庫(kù),于是你對(duì)這個(gè)庫(kù)很癡迷,以后只要寫(xiě)爬蟲(chóng),總是先寫(xiě)上:importrequestsfrombs4importBeautifulSoup當(dāng)然bs已經(jīng)很優(yōu)秀了,但是并不代表可以用正則表達(dá)式解析的頁(yè)面還需要使用bs,也不代表使用lxml能解決的還要?jiǎng)佑胋s,所以這些解析庫(kù)的速度是你在進(jìn)階時(shí)要考慮的問(wèn)題。3.存儲(chǔ)內(nèi)容剛開(kāi)始學(xué)爬蟲(chóng),一般爬取的結(jié)果只是打印出來(lái),最后把在終端輸出的結(jié)果復(fù)制粘貼保存就好了;后來(lái)發(fā)現(xiàn)麻煩會(huì)用上x(chóng)lwt/openpyxl/csv的把存儲(chǔ)內(nèi)容寫(xiě)入表格,再后來(lái)使用數(shù)據(jù)庫(kù)sqlite/mysql/neo4j只要調(diào)用了庫(kù)都很簡(jiǎn)單,當(dāng)然這是入門(mén)。進(jìn)階要開(kāi)始學(xué)習(xí)如何選擇合適的數(shù)據(jù)庫(kù),或者存儲(chǔ)方式。當(dāng)爬取的內(nèi)容過(guò)千萬(wàn)的時(shí)候,如何設(shè)計(jì)使存儲(chǔ)速度更快,比如說(shuō)當(dāng)既有人物關(guān)系又有人物關(guān)系的時(shí)候,一定會(huì)用neo4j來(lái)存儲(chǔ)關(guān)系,myslq用來(lái)存儲(chǔ)用戶信息,這樣分開(kāi)是因?yàn)槿绻畔⑷看嫒雗eo4j,后期的存儲(chǔ)速度經(jīng)十分的慢。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)Scrapy。除了爬取策略以外,還有幾點(diǎn)也是必備的:1.代理策略以及多用戶策略代理是爬蟲(chóng)進(jìn)階階段必備的技能,與入門(mén)階段直接套用代理不同,在進(jìn)階階段你需要考慮如何設(shè)計(jì)使用代理策略,什么時(shí)候換代理,代理的作用范圍等等,多用戶的抓取策略考慮的問(wèn)題基本上與代理策略相同。2.增量式抓取以及數(shù)據(jù)刷新比如說(shuō)你抓取的是一個(gè)酒店網(wǎng)站關(guān)于酒店價(jià)格數(shù)據(jù)信息的,那么會(huì)有這些問(wèn)題:酒店的房型的價(jià)格是每天變動(dòng)的,酒店網(wǎng)站每天會(huì)新增一批酒店,那么如何進(jìn)行存儲(chǔ)、如何進(jìn)行數(shù)據(jù)刷新都是應(yīng)該考慮的問(wèn)題。3.驗(yàn)證碼相關(guān)的一些問(wèn)題有很多人提到驗(yàn)證碼,我個(gè)人認(rèn)為驗(yàn)證碼不是爬蟲(chóng)主要去解決的問(wèn)題,驗(yàn)證碼不多的情況考慮下載到本地自己輸入驗(yàn)證碼,在多的情況下考慮接入打碼平臺(tái)。(五)Python爬蟲(chóng)面試指南前段時(shí)間快要畢業(yè),而我又不想找自己的老本行Java開(kāi)發(fā)了,所以面了很多Python爬蟲(chóng)崗位。因?yàn)槲以谀暇┥蠈W(xué),所以我一開(kāi)始只是在南京投了簡(jiǎn)歷,我一共面試了十幾家企業(yè),其中只有一家沒(méi)有給我發(fā)offer,其他企業(yè)都愿意給到10K的薪資,不要拿南京的薪資水平和北上深的薪資水平比較,結(jié)合面試常問(wèn)的問(wèn)題類型說(shuō)一說(shuō)我的。第一點(diǎn):Python因?yàn)槊嬖嚨氖荘ython爬蟲(chóng)崗位,面試官大多數(shù)會(huì)考察面試者的基礎(chǔ)的Python知識(shí),包括但不限于:????Python2.x與Python3.x的區(qū)別Python的裝飾器Python的異步Python的一些常用內(nèi)置庫(kù),比如多線程之類的第二點(diǎn):數(shù)據(jù)結(jié)構(gòu)與算法數(shù)據(jù)結(jié)構(gòu)與算法是對(duì)面試者尤其是校招生面試的一個(gè)很重要的點(diǎn),當(dāng)然小公司不會(huì)太在意這些,從目前的招聘情況來(lái)看對(duì)面試者的數(shù)據(jù)結(jié)構(gòu)與算法的重視程度與企業(yè)的好壞成正比,那些從不問(wèn)你數(shù)據(jù)結(jié)構(gòu)的你就要當(dāng)心他們是否把你當(dāng)碼農(nóng)用的,當(dāng)然以上情況不絕對(duì),最終解釋權(quán)歸面試官所有。第三點(diǎn):Python爬蟲(chóng)最重要也是最關(guān)鍵的一點(diǎn)當(dāng)然是你的Python爬蟲(chóng)相關(guān)的知識(shí)與經(jīng)驗(yàn)儲(chǔ)備,這通常也是面試官考察的重點(diǎn),包括但不限于:?????你遇到過(guò)的反爬蟲(chóng)的策略有哪些?你常用的反反爬蟲(chóng)的方案有哪些?你用過(guò)多線程和異步嗎?除此之外你還用過(guò)什么方法來(lái)提高爬蟲(chóng)效率?有沒(méi)有做過(guò)增量式抓?。繉?duì)Python爬蟲(chóng)框架是否有了解?第四點(diǎn):爬蟲(chóng)相關(guān)的項(xiàng)目經(jīng)驗(yàn)爬蟲(chóng)重在實(shí)踐,除了理論知識(shí)之外,面試官也會(huì)十分注重爬蟲(chóng)相關(guān)的項(xiàng)目:?你做過(guò)哪些爬蟲(chóng)項(xiàng)目?如果有Github最好?你認(rèn)為你做的最好的爬蟲(chóng)項(xiàng)目是哪個(gè)?其中解決了什么難題?有什么特別之處?以上是我在面試過(guò)程中,會(huì)碰到的一些技術(shù)相關(guān)的問(wèn)題的總結(jié),當(dāng)然面試中不光是技術(shù)這一點(diǎn),但是對(duì)于做技術(shù)的,過(guò)了技術(shù)面基本上就是薪資問(wèn)題了。(六)推薦一些不錯(cuò)的Python博客如果是Python基礎(chǔ)的話,廖雪峰的博客教程會(huì)是一個(gè)不錯(cuò)的選擇:??Python3教程Python2.7教程當(dāng)然很多剛接觸Python的同學(xué)反應(yīng)廖大大的教程中部分跳躍性太大,如果覺(jué)得跳躍性太大可以結(jié)合菜鳥(niǎo)教程一起看:??Python3教程|菜鳥(niǎo)教程Python基礎(chǔ)教程|菜鳥(niǎo)教程如果你英文稍好的話推薦還是看官方文檔:Python3.6.0documentation如果不是為了學(xué)習(xí)Python基礎(chǔ)的話,推薦幾個(gè)其他的博客。????董老師的博客:小明明sàdomicile《Python-Web開(kāi)發(fā)實(shí)戰(zhàn)》的作者,知乎某位工程師的博客:分類《Python》,具體是哪位大神我不太清楚。依云大大的博客文章值得深讀:依云'sBlog《從Python開(kāi)始學(xué)編程》的作者博客:PythonVamei博客園Python|the5fire的技術(shù)博客(七)Python如何進(jìn)階很多人在學(xué)習(xí)編程之初都會(huì)碰到這種問(wèn)題:學(xué)會(huì)了基礎(chǔ)的語(yǔ)法了,但是還是做不了項(xiàng)目,不知道如何下手。當(dāng)初,我學(xué)習(xí)C的時(shí)候是這樣、Java的時(shí)候是這樣、Python的時(shí)候也是這樣,其實(shí)不管什么語(yǔ)言、什么知識(shí)都是這樣:理論基礎(chǔ)知識(shí)謝科的回答如果你想學(xué)習(xí)編程,但是找不到學(xué)習(xí)路徑和資源,歡迎關(guān)注專欄:學(xué)習(xí)編程第一:Python爬蟲(chóng)學(xué)習(xí)系列教程Python版本:2.7整體目錄:一、爬蟲(chóng)入門(mén)?Python爬蟲(chóng)入門(mén)一之綜述?Python爬蟲(chóng)入門(mén)二之爬蟲(chóng)基礎(chǔ)了解?Python爬蟲(chóng)入門(mén)三之Urllib庫(kù)的基本使用?Python爬蟲(chóng)入門(mén)四之Urllib庫(kù)的高級(jí)用法?Python爬蟲(chóng)入門(mén)五之URLError異常處理?Python爬蟲(chóng)入門(mén)六之Cookie的使用?Python爬蟲(chóng)入門(mén)七之正則表達(dá)式二、爬蟲(chóng)實(shí)戰(zhàn)?Python爬蟲(chóng)實(shí)戰(zhàn)一之爬取糗事百科段子?Python爬蟲(chóng)實(shí)戰(zhàn)二之爬取百度貼吧帖子?Python爬蟲(chóng)實(shí)戰(zhàn)三之實(shí)現(xiàn)山東大學(xué)無(wú)線網(wǎng)絡(luò)掉線自動(dòng)重連?Python爬蟲(chóng)實(shí)戰(zhàn)四之抓取淘寶MM照片?Python爬蟲(chóng)實(shí)戰(zhàn)五之模擬登錄淘寶并獲取所有訂單?Python爬蟲(chóng)實(shí)戰(zhàn)六之抓取愛(ài)問(wèn)知識(shí)人問(wèn)題并保存至數(shù)據(jù)庫(kù)?Python爬蟲(chóng)實(shí)戰(zhàn)七之計(jì)算大學(xué)本學(xué)期績(jī)點(diǎn)?Python爬蟲(chóng)實(shí)戰(zhàn)八之利用Selenium抓取淘寶匿名旺旺三、爬蟲(chóng)利器?Python爬蟲(chóng)利器一之Requests庫(kù)的用法?Python爬蟲(chóng)利器二之BeautifulSoup的用法?Python爬蟲(chóng)利器三之Xpath語(yǔ)法與lxml庫(kù)的用法?Python爬蟲(chóng)利器四之PhantomJS的用法?Python爬蟲(chóng)利器五之Selenium的用法?Python爬蟲(chóng)利器六之PyQuery的用法四、爬蟲(chóng)進(jìn)階?Python爬蟲(chóng)進(jìn)階一之爬蟲(chóng)框架概述?Python爬蟲(chóng)進(jìn)階二之PySpider框架安裝配置?Python爬蟲(chóng)進(jìn)階三之爬蟲(chóng)框架Scrapy安裝配置?Python爬蟲(chóng)進(jìn)階四之PySpider的用法第二(第一的姊妹篇):Python爬蟲(chóng)入門(mén)教程Python版本:2.7教程目錄:?[Python]網(wǎng)絡(luò)爬蟲(chóng)(一):抓取網(wǎng)頁(yè)的含義和URL基本構(gòu)成?[Python]網(wǎng)絡(luò)爬蟲(chóng)(二):利用urllib2通過(guò)指定的URL抓取網(wǎng)頁(yè)內(nèi)容?[Python]網(wǎng)絡(luò)爬蟲(chóng)(三):異常的處理和HTTP狀態(tài)碼的分類?[Python]網(wǎng)絡(luò)爬蟲(chóng)(四):Opener與Handler的介紹和實(shí)例應(yīng)用?[Python]網(wǎng)絡(luò)爬蟲(chóng)(五):urllib2的使用細(xì)節(jié)與抓站技巧?[Python]網(wǎng)絡(luò)爬蟲(chóng)(六):一個(gè)簡(jiǎn)單的百度貼吧的小爬蟲(chóng)?[Python]網(wǎng)絡(luò)爬蟲(chóng)(七):Python中的正則表達(dá)式教程?[Python]網(wǎng)絡(luò)爬蟲(chóng)(八):糗事百科的網(wǎng)絡(luò)爬蟲(chóng)(v0.3)源碼及解析(簡(jiǎn)化更新)?[Python]網(wǎng)絡(luò)爬蟲(chóng)(九):百度貼吧的網(wǎng)絡(luò)爬蟲(chóng)(v0.4)源碼及解析?[Python]網(wǎng)絡(luò)爬蟲(chóng)(十):一個(gè)爬蟲(chóng)的誕生全過(guò)程(以山東大學(xué)績(jī)點(diǎn)運(yùn)算為例)?[Python]網(wǎng)絡(luò)爬蟲(chóng)(11):亮劍!爬蟲(chóng)框架小抓抓Scrapy閃亮登場(chǎng)!?[Python]網(wǎng)絡(luò)爬蟲(chóng)(12):爬蟲(chóng)框架Scrapy的第一個(gè)爬蟲(chóng)示例入門(mén)教程(九)Python開(kāi)發(fā)微信公眾號(hào)我的第一個(gè)Python項(xiàng)目就是做的微信公眾號(hào)機(jī)器人,按照當(dāng)時(shí)我的思路來(lái)講講如何學(xué)習(xí)使用Python來(lái)開(kāi)發(fā)微信公眾號(hào):大家伙收藏順手點(diǎn)個(gè)贊唄。微信公眾號(hào)功能開(kāi)發(fā)分為兩大塊:需要調(diào)用微信內(nèi)部功能、不需要調(diào)用微信內(nèi)部功能,重點(diǎn)在調(diào)用微信內(nèi)部功能組建。些容器對(duì)象,比如list、dict、tuple,instance等可能會(huì)出現(xiàn)引用循環(huán),對(duì)于這些循環(huán),垃圾回收器會(huì)定時(shí)回收這些循環(huán)(對(duì)象之間通過(guò)引用(指針)連在一起,構(gòu)成一個(gè)有向圖,對(duì)象構(gòu)成這個(gè)有向圖的節(jié)點(diǎn),而引用關(guān)系構(gòu)成這個(gè)有向圖的邊)。分代收集:Python把內(nèi)存根據(jù)對(duì)象存活時(shí)間劃分為三代,對(duì)象創(chuàng)建之后,垃圾回收器會(huì)分配它們所屬的代。每個(gè)對(duì)象都會(huì)被分配一個(gè)代,而被分配更年輕的代是被優(yōu)先處理的,因此越晚創(chuàng)建的對(duì)象越容易被回收。如果你想要深入了解Python的GC機(jī)制,點(diǎn)擊這里:[轉(zhuǎn)載]Python垃圾回收機(jī)制--完美講解!(四)、Python多線程(multi-threading)。這是個(gè)好主意嗎?Python并不支持真正意義上的多線程,Python提供了多線程包。Python中有一個(gè)叫GlobalInterpreterLock(GIL)的東西,它能確保你的代碼中永遠(yuǎn)只有一個(gè)線程在執(zhí)行。經(jīng)過(guò)GIL的處理,會(huì)增加執(zhí)行的開(kāi)銷。這就意味著如果你先要提高代碼執(zhí)行效率,使用threading不是一個(gè)明智的選擇,當(dāng)然如果你的代碼是IO密集型,多線程可以明顯提高效率,相反如果你的代碼是CPU密集型的這種情況下多線程大部分是雞肋。想要深入詳細(xì)了解多線程,點(diǎn)擊這里:詳解Python中的多線程編程_python想了解一下IO密集和CPU密集可以點(diǎn)擊這里:CPU-bound(計(jì)算密集型)和I/Obound(I/O密集型)(五)、說(shuō)明os,sys模塊不同,并列舉常用的模塊方法?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新小區(qū)物業(yè)承包合同示例
- 2024系統(tǒng)開(kāi)發(fā)合同
- 2024年餐廳租賃合同模板
- 2024分期付款購(gòu)買合同
- 文化節(jié)慶活動(dòng)贊助協(xié)議
- 2025年會(huì)計(jì)專業(yè)考試高級(jí)會(huì)計(jì)實(shí)務(wù)試卷及解答參考
- 排水箱涵勞務(wù)分包合同2024年
- 城市管道天然氣特許經(jīng)營(yíng)合同
- 撫養(yǎng)權(quán)變更協(xié)議模板2024年
- 協(xié)商一致解除勞動(dòng)合同書(shū)樣本
- 新蘇教版五年級(jí)上冊(cè)科學(xué)全冊(cè)教學(xué)課件(2022年春整理)
- 小學(xué)體育水平一《走與游戲》教學(xué)設(shè)計(jì)
- 秋日私語(yǔ)(完整精確版)克萊德曼(原版)鋼琴雙手簡(jiǎn)譜 鋼琴譜
- 辦公室室內(nèi)裝修工程技術(shù)規(guī)范
- 鹽酸安全知識(shí)培訓(xùn)
- 萬(wàn)盛關(guān)于成立醫(yī)療設(shè)備公司組建方案(參考模板)
- 消防安全巡查記錄臺(tái)帳(共2頁(yè))
- 科技特派員工作調(diào)研報(bào)告
- 中波廣播發(fā)送系統(tǒng)概述
- 縣疾控中心中層干部競(jìng)聘上崗實(shí)施方案
- 急性心肌梗死精美PPt完整版
評(píng)論
0/150
提交評(píng)論