python爬虫记录时间_Python新手写爬虫全过程记录分析
目標(biāo)網(wǎng)站:http://bohaishibei.com/post/category/main/(一個(gè)很有趣的網(wǎng)站,一段話配一個(gè)圖,老有意思了~)網(wǎng)站形式如下:
目標(biāo):把大的目標(biāo)分為幾個(gè)小的目標(biāo)。因?yàn)榈谝淮胃蛇@個(gè),所以對自己能力很清楚,所以完成順序由簡單到復(fù)雜。
1.爬取一期的內(nèi)容,包括標(biāo)題,和圖片的url
2.把數(shù)據(jù)存在本地的txt文件中
3.想爬多少就爬就爬少
4.寫一個(gè)網(wǎng)站,展示一下。(純用于學(xué)習(xí))
Let‘s 搞定它!
第一步:
我用的是google瀏覽器,進(jìn)入開發(fā)者模式,使用’頁面內(nèi)的元素選擇器‘,先看一下內(nèi)頁中的結(jié)構(gòu),找到我們要的數(shù)據(jù)所在’標(biāo)簽‘。
這里我們需要的博海拾貝一期的內(nèi)容全部在
第一條紅線是:頁面內(nèi)的元素選擇器
第二條是:內(nèi)容所在標(biāo)簽
第三條是:title
經(jīng)過分析得出,我只要,這個(gè)標(biāo)簽的內(nèi)容:所以寫了下面的方法:
這里需要說一下:在寫這個(gè)爬蟲之前我就打算只用字符串的內(nèi)置函數(shù)來處理匹配問題,所以我就上http://www.w3cschool.cc/python/進(jìn)入到字符串頁面,大致看了一遍字符串的內(nèi)建函數(shù)有哪些。
partition() 方法用來根據(jù)指定的分隔符將字符串進(jìn)行分割。
如果字符串包含指定的分隔符,則返回一個(gè)3元的元組,第一個(gè)為分隔符左邊的子串,第二個(gè)為分隔符本身,第三個(gè)為分隔符右邊的子串。
partition() 方法是在2.5版中新增的。參考:http://www.w3cschool.cc/python/att-string-partition.html
這樣我就得到只有內(nèi)容的字符串了,干凈~
第二步:
得到title的內(nèi)容。title的格式如下,我只要’【2】‘后面的文字,后面的img暫時(shí)不考慮一步步的來。
【2】這是我最近的狀態(tài),請告訴我不是我一個(gè)人!
http://ww4.sinaimg.cn/mw690/005CfBldtw1etay8ifthnj30an0aot8w.jpg />
我寫了下面的方法:
這里用try....except是因?yàn)槲也恢涝趺刺鲅h(huán)。。。。求大神有更好的方法告訴我。
我這里跳出循環(huán)用的是當(dāng)拋出VlaueError異常就說明找不到了,那就返回列表。就跳出循環(huán)了。
num1是】的位置,num2是
的位置,然后用序列的切片,咔嚓咔嚓一下就是我想要的數(shù)據(jù)了。這里需要注意的是:切片’要頭不要尾‘所以我們的得到的數(shù)據(jù)就是這個(gè)樣子的:哎呀,這個(gè)是什么鬼!要頭不要尾就是這個(gè)意思!
然后我就想:那就把num1加1不就完了嗎?我真是太天真了。。。。
請+3,我覺得原理是這樣的,這個(gè)是個(gè)中文字符!(求大神指點(diǎn))
第三步:
交代清楚我昨天晚上做的事情了,記錄下時(shí)間——10:01,下面我要爬圖片的url了。這里要說一下,如果要把圖片下下來,最重要的一步就是得到url,然后下載下來保存到本地(用文本的IO)。
我先獲得url,實(shí)現(xiàn)原理同獲取title,我在想,既然一樣卸載獲取title的方法里好,還是在寫一個(gè)方法好。我單獨(dú)寫了一個(gè)方法,但是其實(shí)就是復(fù)制了一下title的方法,改了下匹配的字符串,代碼如下:
結(jié)果圖如下:
這里發(fā)現(xiàn),有的時(shí)候一個(gè)title會有很多個(gè)圖片。我思考之后有如下思路:
1.需要寫一個(gè)方法,當(dāng)一個(gè)title出現(xiàn)多個(gè)圖片的時(shí)候,捕獲url。這個(gè)需要有一個(gè)判斷語句,當(dāng)url長度大于一個(gè)url長度的時(shí)候,才需要調(diào)用這個(gè)函數(shù)。
2.多個(gè)圖片的url怎么放?使用符號隔開存放還是嵌套放入一個(gè)數(shù)組里面?我這里打算用’|‘隔開,這樣的話加一個(gè)判語句,或者先判斷一下url長度,都可以進(jìn)行。
這個(gè)問題先放在這里,因?yàn)楫?dāng)我要下載的時(shí)候這個(gè)url才需要過濾,所以先進(jìn)行下一步,把數(shù)據(jù)存到本地txt文中,這里在解決這個(gè)問題也不晚。
第四步:
把數(shù)據(jù)存到本地的txt中。Python文件IO參考資料:http://www.w3cschool.cc/python/python-files-io.html
這里需要注意的是,文本寫入的時(shí)候記得close,還有就是注意打開文本的模式。
這里我考慮了一個(gè)問題,根據(jù)《編寫高質(zhì)量代碼——改善python程序的91個(gè)建議》這本書中寫道的,字符串連接時(shí),用jion()效率高于’+‘
所以我寫了如下代碼:
這樣造成了一個(gè)問題,看圖
造成最后一個(gè)和新的一個(gè)列表寫入時(shí)在同一行。同時(shí)用with....as更好。修改后代碼如下:
下面研究title和img以什么樣的格式存入txt文本:
title$img
這里我有一個(gè)概念混淆了,+和join()方法的效率問題主要在連接多個(gè)字符串的時(shí)候,我這個(gè)只用連接一次,不需要考慮這個(gè)問題。
文本中的內(nèi)容如下:愿你貪吃不胖,愿你懶惰不丑,愿你深情不被辜負(fù)。$http://ww1.sinaimg.cn/mw690/005CfBldtw1etay8dl1bsj30c50cbq4m.jpg"
這是我最近的狀態(tài),請告訴我不是我一個(gè)人!$http://ww4.sinaimg.cn/mw690/005CfBldtw1etay8ifthnj30an0aot8w.jpg
引誘別人和你擊拳慶祝,然后偷偷把手勢變成二,就可以合體成為蝸牛cosplay……$http://ww2.sinaimg.cn/mw690/005CfBldtw1etay8fzm1sg30b40644qq.gif
原來蝸牛是醬紫吃東西的。。。。漲姿勢!$http://ww4.sinaimg.cn/mw690/005CfBldtw1etay8egg8vg30bo08ax6p.gif
寫入文本的最后,解決多個(gè)圖片的問題:
輸出如下:元?dú)馍倥愐夂?by @TopFashionStyle$http://ww2.sinaimg.cn/mw690/005CfBldtw1etay848iktj30bz0bcq4x.jpg|http://ww1.sinaimg.cn/mw690/005CfBldtw1etay83kv5pj30c10bkjsr.jpg|http://ww3.sinaimg.cn/mw690/005CfBldtw1etay82qdvsj30c10bkq3z.jpg|http://ww1.sinaimg.cn/mw690/005CfBldtw1etay836z8lj30c00biq40.jpg|http://ww4.sinaimg.cn/mw690/005CfBldtw1etay8279qmj30ac0a0q3p.jpg|http://ww1.sinaimg.cn/mw690/005CfBldtw1etay81ug5kj30c50bnta6.jpg|http://ww2.sinaimg.cn/mw690/005CfBldtw1etay8161ncj30c20bgmyt.jpg|http://ww2.sinaimg.cn/mw690/005CfBldtw1etay804oy7j30bs0bgt9r.jpg|
暫時(shí)功能是實(shí)現(xiàn)了,后面遇到問題需要修改在改吧。。。。新手走一步看一步!!!
到此為止,已經(jīng)完成了前兩個(gè)簡單的計(jì)劃:
1.爬取一期的內(nèi)容,包括標(biāo)題,和圖片的url
2.把數(shù)據(jù)存在本地的txt文件中
全部代碼如下:
總結(jié)
以上是生活随笔為你收集整理的python爬虫记录时间_Python新手写爬虫全过程记录分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python用sqlite数据库,pyt
- 下一篇: log.php(157),Log出现pe