Python:好看的男人們,快到碗裡來!
寫在前面
前不久,公眾號後臺有妹子不高興了,私信我說,我為什麼會覺得我公眾號的人都是喜歡看 女人 呢?什麼時候發發男人啊。

想想也是,畢竟關注這個公眾號有 15.6% 是妹紙呢。怎麼能沒有男人呢?
學習Python中有不明白推薦加入交流群
號:864573496群裡有志同道合的小夥伴
,互幫互助,群裡有不錯的視訊學習教程
和PDF!每晚8:00群裡直播
那麼接下來就把你想要的帥哥,用 Python 把它們裝進自己的電腦。
剛好看到這個地址:
http://www.shuaige5.com/tag/xinggannanren/
發現裡面的性感男人真的很sexy哇。

答應我,先別激動好麼?
分析帥哥圖片地址

首先來分析一下我們要爬取的這些圖片地址,通過 Chrome 的開發者工具可以看到這些圖片的地址在 img 標籤中,但是這個地址有點奇怪,在 src 裡面還有一個 src 指向圖片的地址,我們要的圖片地址就是在第二個 src 指向的地址,所以我們的正則應該是這樣:
1'<div class="inner_wrapper_img inner_wrapper_img1">.*?<img.*?src="/e/ext.*?src=(.*?)&h=240&w=190&zc=1".*?</div>'
當我們要點選下一頁的時候呢,可以發現請求地址攜帶了一個引數/index_2.html,所以我們可以通過這個變數來獲取多頁的圖片資料。
爬取男人圖片
那麼分析完之後我們就開始下手吧,我們可以建立一個叫做 shuaige 的圖片資料夾,專門來放這些帥哥的
os.mkdir(dirName)
os.chdir(dirName)
接著我們可以定義幾個變數:
pageNumber = 2 #用於獲取不同頁數的圖片
x = 0 #用於圖片名稱
img_address = [] #存放爬取到的圖片地址
比如我們想要獲取第 2 到第 4 張圖片,那麼我們就可以寫一個迴圈來獲取資料:
while pageNumber < 5 :
page_url = url + '/index_'+str(pageNumber)+'.html' #獲取不同頁數的圖片
addrs = find_imgs(page_url) #獲取地址
for i in addrs:
if i in img_address :
continue
else:
img_address.append(i) # 降低至存追加到img_address這個變數裡面
pageNumber += 1
for each in img_address:
filename = str(x) + ".jpg"
x+=1
with open(filename,'wb') as f: # 將圖片寫入資料夾
img = url_open(each).content
f.write(img)
ok,我們來執行一下,可以看到在我們的專案目錄中建立了一個叫做 shuaige 的資料夾,python 正在下載我們要爬取的圖片:

開啟資料夾一看,一堆 sexy 男人都有了:


友情提示: 小爬怡情,大爬傷身!
完整程式碼:
import os
import re
import requests
def url_open(url):
# 以字典的形式新增請求頭
header = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
}
# 使用get方法傳送請求獲取網頁原始碼
response = requests.get(url, headers=header)
return response
def find_imgs(url):
html = url_open(url).text
pattern = re.compile('<div class="inner_wrapper_img inner_wrapper_img1">.*?<img.*?src="/e/ext.*?src=(.*?)&h=240&w=190&zc=1".*?</div>',re.S)
img_addrs = re.findall(pattern, html)
return img_addrs
def download_shuaige(dirName="shuaige"):
os.mkdir(dirName)
os.chdir(dirName)
pageNumber = 2
x = 0
img_address = []
while pageNumber < 5 :
page_url = url + '/index_'+str(pageNumber)+'.html'
addrs = find_imgs(page_url)
print(len(addrs))
for i in addrs:
if i in img_address :
continue
else:
img_address.append(i)
print(len(img_address))
for each in img_address:
print(each)
pageNumber += 1
for each in img_address:
filename = str(x) + ".jpg"
x+=1
with open(filename,'wb') as f:
img = url_open(each).content
f.write(img)
if __name__ == '__main__':
url = "http://www.shuaige5.com/tag/xinggannanren"
download_shuaige()