Python,可以幫忙搶票,可以爬蟲東西,關(guān)于Python爬蟲怎么做?今天教大家一個(gè)案例,python爬蟲多線程實(shí)戰(zhàn):爬取美桌1080p壁紙圖片 | 技術(shù)
技術(shù)點(diǎn)分析
· 爬蟲requests
· 多線程threading
· 文件io讀寫操作
· xpath 提取ur
· 正則
實(shí)戰(zhàn)
· 分析url
搞清楚各個(gè)url 的關(guān)聯(lián)win4000.com/wallpaper_205_0_10_1.html
URL中與分類的關(guān)系:
wallpaper : 桌面壁紙
205 :壁紙分類對應(yīng)大陸明星
10 :圖片尺寸對應(yīng)1920*1080
分析到這一部,我們知道 ,如果要需要其他類型的壁紙,只需要更改網(wǎng)站分類代碼就可以了。
· 谷歌 charme ,通過右鍵檢查
chrame 瀏覽器右鍵提示。
按圖順序,依次找到對應(yīng)的html標(biāo)簽。
通過查看,我們發(fā)現(xiàn) 中間展示 的圖片是由一個(gè)ul 標(biāo)簽包裹的 多個(gè)Li
我們所要跳轉(zhuǎn)的鏈接 就在 Li 標(biāo)簽中, 這時(shí)就需要使用xpath進(jìn)行數(shù)據(jù)的提取。
到此,我們第一層url 的分析就完成了。可以寫出以下代碼段。
此時(shí)通過xpath 獲到當(dāng)前頁面中的 ul 中所有l(wèi)i 標(biāo)簽了。
那單個(gè)明星的跳轉(zhuǎn)鏈接只需要再次xpath 進(jìn)行提取就Ok了。
完成到這里你的代碼運(yùn)行結(jié)果應(yīng)該如下:是兩個(gè)列表list。
運(yùn)行結(jié)果
準(zhǔn)備下載圖片
到這,完成第一步,你已經(jīng)成功獲到 每個(gè)明星的跳轉(zhuǎn)鏈接 :
url: win4000.com/wallpaper_detail_153895.html
再次進(jìn)行url 的分析:
初步分析
通過上圖的分析,可以找到這張圖,是我們要 1080規(guī)格的。但很可惜,一共9張,現(xiàn)在只能找到一張圖片的url。
選其中兩張圖片地址對比:
pic1.win4000.com/wallpaper/2018-12-26/5c22eb195abe8.jpg
pic1.win4000.com/wallpaper/2018-12-26/5c22eb1c722dc.jpg
好像就是后面文件名不同。如果一張張取是不是很麻煩?
不信你自己去試一下。點(diǎn)再分析一下頁面,有個(gè) 【查看原圖】 選項(xiàng),點(diǎn)一下試試呢?
點(diǎn)擊上圖出,點(diǎn)完發(fā)現(xiàn)了url的變化。
再看看有沒有驚喜的地方 :
上圖為url分析。
通過上圖的分析 ,我們發(fā)現(xiàn)原來這個(gè)big頁面有我們想要的所有 1080P的圖片,而且,全是用ul 包裹,放到單個(gè)Li 標(biāo)簽中 。那簡單了,用之前的辦法 再提取一次,就出來了。代碼如下:
到這里,我們第一步就完成了一頁24個(gè)明星圖片的地址url的爬取。第二步,完成了單個(gè)明星的1080圖片地址url的爬取。下一步,我們把圖片保存到本地就順利結(jié)束。
圖片保存
按需求,要單獨(dú)到一個(gè)文件夾內(nèi)。那我們就需要在本地路徑內(nèi) 創(chuàng)建對應(yīng)的文件夾。此處使用 star_img_name 列表中的值。需要使用到i/o讀寫操作。
順利完成 這個(gè)需求:
源碼展示
代碼運(yùn)行結(jié)果若不同,可看一眼源碼:
運(yùn)行起來是不是很慢(完善版使用多線程),而且這樣看代碼,是不是有種:干干巴巴的,麻麻咧咧的,一點(diǎn)都不圓潤,盤他!!
完善版是可以完成可選分類,可選規(guī)格 ,多線程版。希望這個(gè)小實(shí)戰(zhàn)案例可以幫到大家。
有關(guān)于Python爬蟲的課程:
Python爬蟲數(shù)據(jù)挖掘基礎(chǔ)教程
python網(wǎng)絡(luò)爬蟲第一天
python網(wǎng)絡(luò)爬蟲第二天
有想學(xué)習(xí)的小伙伴,可以關(guān)注黑馬程序員,后臺回復(fù)“Python爬蟲”哦!
學(xué)習(xí)Python可以參考回答:https://www.wukong.com/question/6621147311907012872/
Python可以用來做:
Web 應(yīng)用開發(fā)、自動化運(yùn)維、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)分析、科學(xué)計(jì)算、人工智能,還可以用在各種場景與各種平臺、設(shè)備、語言進(jìn)行連接,因此被稱為膠水語言。
相關(guān)崗位:
Linux運(yùn)維
Python web網(wǎng)站工程師
Python web全棧工程師
Python自動化測試
Python 爬蟲開發(fā)工程師
數(shù)據(jù)分析師
網(wǎng)絡(luò)編程工程師
......
既然一直用Java應(yīng)該在編程這一塊是比較擅長的,我想提這個(gè)問題的人是想知道python的應(yīng)用領(lǐng)域,這里談一下我個(gè)人看法。
人工智能領(lǐng)域,因?yàn)樽罱鼛啄耆斯ぶ悄艿幕馃幔琍ython也深受大家的歡迎,不知道有沒有受到相關(guān)的感染
python在人工智能方面的應(yīng)用,python是一種簡單、易用但專業(yè)、嚴(yán)謹(jǐn)通用的語言,讓普通人很容易入門,把各種基本的元素組合在一起協(xié)調(diào)動作。
正是因?yàn)檫@樣,Python始終讓開發(fā)者關(guān)注業(yè)務(wù)邏輯的本身,而不用考慮CPU等其它一些性能方面的不足,如果執(zhí)行速度慢,可以利用C語言,與之相配合,來達(dá)到執(zhí)行速度的提升。
python在人工智能方面的應(yīng)用,對我們來說,是一件好事,無論是電子商務(wù)、搜索引擎、智能硬件等,都只是產(chǎn)生數(shù)據(jù)的源泉,我們都可以使用python依據(jù)商業(yè)邏輯希望得到的結(jié)果。
python在web程序中的應(yīng)用,django、flask等一批優(yōu)秀的框架為我們寫web程序提供了最大可能的便捷
google、youtobe、豆瓣等國內(nèi)外知名的公司都有在使用Python在開發(fā)應(yīng)用,當(dāng)然,對于我們普通的用記,Python中的django、flask框架為我們的web程序提供了最大的靈活性,我們可以通過簡單的幾行代碼,就可以寫出一個(gè)web程序,提高了我們的工作效率。
python在數(shù)據(jù)分析上的應(yīng)用,更是許多人學(xué)習(xí)的初衷,簡單、便捷的處理數(shù)據(jù)方式,為數(shù)據(jù)分析師們提供了更多的可能。
一個(gè)非常好的問題。制定一個(gè)學(xué)習(xí)計(jì)劃,學(xué)習(xí)基礎(chǔ)知識后,多寫代碼。
一,學(xué)習(xí)計(jì)劃1. 制定一個(gè)切實(shí)可行的學(xué)習(xí)計(jì)劃,要自律,不可三天打魚兩天篩網(wǎng)
2. 保證學(xué)習(xí)時(shí)間,多寫代碼
二,學(xué)習(xí)Python基礎(chǔ)掌握Python語言基礎(chǔ),數(shù)據(jù)類型、基本語法、常用數(shù)據(jù)結(jié)構(gòu)、常用類,等等,網(wǎng)上資源很多。
三,多寫代碼推薦一個(gè)在線編程網(wǎng)站,HackerRank,看名字就知道很牛,Hacker排行榜。其實(shí)里面有很多針對初學(xué)者的編程練習(xí)題,并且提供了成績查詢、排名、競賽等功能。
1,注冊賬號,登錄,選擇要學(xué)習(xí)的編程語言
2,選擇題目,篩選難度、功能類別
3,編寫代碼,測試,提交
4,根據(jù)通過單元測試情況獲得分?jǐn)?shù),獲得Python勛章。
我是工作多年的Web應(yīng)用架構(gòu)師,陸續(xù)發(fā)布關(guān)于軟件開發(fā)方面的文章,歡迎關(guān)注我,了解更多IT專業(yè)知識。