国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用python抓取美女福利圖片

2019-11-08 02:52:46
字體:
來源:轉載
供稿:網友

這篇文章干嘛的?

本屌在上網時偶然看到一個圖片網站,網站的尺度是這樣的:

圖片站首頁

里面的美女露骨而不露點,簡直是宅男福利。一時興起,決定將網站上的圖片down下來研究研究。正好最近在研究python,所以決定用這個抓取圖片存到本地,將圖片url存到 mongodb以防止以后用。

源碼項目github地址 : https://github.com/panacena/mmPictures/


爬蟲初識

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動的抓取萬維網信息的程序或者腳本。 要學習Python爬蟲,我們要學習的共有以下幾點: * Python基礎知識 * Python中urllib和urllib2庫的用法 * Python正則表達式 * Python爬蟲框架Scrapy * Python爬蟲更高級的功能 當然,我們今天暫時不需要使用框架進行爬取,只用urllib2等庫進行操作。其它的一些關于爬蟲的一些基本信息,可以在這位大神的博客中學習到。學習爬蟲點我。


開始爬取

確定URL開始抓取

我們以 http://www.zngirls.com/rank/sum/ 為起始頁面進行爬取,打開網頁后右鍵查看源代碼。 打開這個url后,如圖1。我們需要關心的是紅色鏈接的內容。 圖1

這個如何查找呢?如果你用的是360瀏覽器,在MM圖片那右擊,選擇“審查元素”。之后就可以查看到點擊MM頭像后跳轉的url地址和MM頭像的url地址 。圖2: 圖2

3 . 現在還是沒有看到寫真的圖片,我們點擊MM的頭像,進入到了下圖的頁面 http://www.zngirls.com/girl/21751/ 可以看到如圖3這個頁面也沒有寫真的具體圖片,只是寫真的封面集合。不急,我們繼續點擊封面。 圖3 4 . 點擊封面后,http://www.zngirls.com/g/19671/1.html 進入的頁面就可以看到寫真的具體圖片了。這時我們就可以爬取圖片地址了。當然,這個也是分頁的,所以也需要獲取一共多少頁以及每一頁的url。

Paste_Image.png

開始碼代碼吧

從上面的步驟我們整理一下思路,大概分為以下三部: * 第一步 從 http://www.zngirls.com/rank/sum/ 開始抓取MM點擊頭像的鏈接(注意是分頁的) * 第二部 從 http://www.zngirls.com/girl/21751/ 抓取每一個寫真集合的鏈接(注意是分頁的) * 第三部 從 http://www.zngirls.com/g/19671/1.html 在寫真圖片的具體頁面抓取圖片(注意是分頁的)

1. 從起始頁面 http://www.zngirls.com/rank/sum/ 開始首選先獲取分頁的頁數以及每一頁的url,方便下一步獲取點擊MM獲取專輯url地址。接著解析每一頁的html,獲取每一頁中點擊MM頭像后跳轉的專輯集合頁面。

"""從起始頁面 http://www.zngirls.com/rank/sum/ 開始獲取排名的頁數和每一頁的url"""def mmRankSum(): req = urllib2.Request("http://www.zngirls.com/rank/sum/", headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) #首先獲取頁碼數,然后用循環的方式挨個解析每一個頁面 pages = htmlpath.xpath('//div[@class="pagesYY"]/div/a/@href') for i in range( len(pages) -2 ): pagesitem="http://www.zngirls.com/rank/sum/"+ pages[i] mmRankitem(pagesitem)"""參數 url : 分頁中每一頁的具體url地址通過穿過來的參數,使用 lxml和xpath 解析 html,獲取每一個MM寫真專輯頁面的url"""def mmRankitem(url): req = urllib2.Request(url, headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) pages = htmlpath.xpath('//div[@class="rankli_imgdiv"]/a/@href') for i in range(len(pages)):

2. 從mmRankitem方法中獲取到的url中解析每一個MM寫真專輯圖片的具體地址,也就是寫真圖片列表的頁面。

"""參數 albumsurl: 每一個MM專輯的頁面地址通過穿過來的參數,獲取每一個MM寫真專輯圖片集合的地址"""def getAlbums(girlUrl): req = urllib2.Request(girlUrl, headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) pages = htmlpath.xpath('//div[@class="igalleryli_div"]/a/@href') for i in range(len(pages)): print "http://www.zngirls.com/" + pages[i]

3. 從每一頁中獲取圖片的url,已經每一張圖片的名稱,方便下一步進行下載。

"""參數 url : 每一個MM寫真專輯圖片集合的地址通過穿過來的參數,首先先獲取圖片集合的頁數,然后每一頁解析寫真圖片的真實地址"""def getPagePicturess(albumsurl): req = urllib2.Request(albumsurl, headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) pages = htmlpath.xpath('//div[@id="pages"]/a/@href') for i in range(len(pages)-2): savePictures("http://www.zngirls.com" + pages[i])"""參數 url : 每一個MM寫真專輯圖片集合的地址(進過分頁檢測)通過穿過來的參數,直接解析頁面,獲取寫真圖片的地址,然后下載保存到本地。"""def savePictures(itemPagesurl): header = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/52.0.2743.116 Safari/537.36" , "Connection": "keep-alive" , "Referer": "image / webp, image / *, * / *;q = 0.8" ,"Accept":"image/webp,image/*,*/*;q=0.8" } req = urllib2.Request(itemPagesurl, headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) print itemPagesurl pages = htmlpath.xpath('//div[@class="gallery_wrapper"]/ul/img/@src') for i in range(len(pages) ): print pages[i] pciturelist.append(pages[i])

4 .獲取每張圖片的url,可每張照片的名稱,然后下載到本地。

"""參數 url : 每一個MM寫真專輯圖片集合的地址(進過分頁檢測)通過穿過來的參數,直接解析頁面,獲取寫真圖片的地址,然后下載保存到本地。"""def savePictures(itemPagesurl): header = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" , "Connection": "keep-alive" , "Referer": "image / webp, image / *, * / *;q = 0.8" ,"Accept":"image/webp,image/*,*/*;q=0.8" } req = urllib2.Request(itemPagesurl, headers=header) html = urllib2.urlopen(req) htmldata = html.read() htmlpath = etree.HTML(htmldata) print itemPagesurl pages = htmlpath.xpath('//div[@class="gallery_wrapper"]/ul/img/@src') names = htmlpath.xpath('//div[@class="gallery_wrapper"]/ul/img/@alt') for i in range(len(pages) ): print pages[i] pciturelist.append(pages[i]) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" , "Connection": "keep-alive" , "Referer": pages[i] } req = urllib2.Request(pages[i], headers=headers) urlhtml = urllib2.urlopen(req) respHtml = urlhtml.read() binfile = open('%s.jpg' % ( names[i] ) , "wb") binfile.write(respHtml); binfile.close();

5. 執行完畢后(時間可能會比較長),就可以在文件夾里面看到一張一張的圖片都下載完畢。再這里注意的是防止出現反爬蟲,可以用設置header或者代理等方式。 圖片下載到了文件夾中

沒有設置一些header等參數時,有時會出現如下這種情況,這種情況應該是網站有反爬蟲的機制。

反爬蟲


源碼項目github地址 : https://github.com/panacena/mmPictures/ 這是本人學習python后寫的一個小例子。代碼寫的很爛。以后會學習Scrapy等框架然后在重新重構一下代碼。希望可以給個star~~~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 临朐县| 赤峰市| 西乌珠穆沁旗| 秦皇岛市| 石楼县| 焦作市| 紫云| 南丹县| 偃师市| 河北区| 贡山| 济阳县| 周宁县| 江山市| 许昌市| 湖北省| 大城县| SHOW| 额济纳旗| 崇明县| 古浪县| 吉木乃县| 集贤县| 岚皋县| 瑞金市| 遵义县| 莱阳市| 阿瓦提县| 呼伦贝尔市| 陈巴尔虎旗| 凌云县| 仪征市| 灵璧县| 桂东县| 景德镇市| 城步| 德安县| 三门县| 萨嘎县| 河东区|