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