【Python爬蟲】:爬取乾貨集中營上的全部美女(翻頁)

一.確定爬取思路

今天突發奇想,能不能使用python爬蟲來爬取一些妹子圖片呢,於是摩拳擦掌開始幹了起來。首先打開網頁htttps://gank.io 當中的妹子專欄,

發現裏面全是妹子,如下所示:

網址如下所示:

https://gank.io/special/Girl

翻到最下面發現按鈕,一共有十個分頁,如下所示:

 

 因此我點擊了第二個分頁,進去查看網頁,看點擊之後的網址會不會發生改變,如果網址沒有發生改變。說明這是一個靜態網頁,如果改變則說明點擊按鈕觸發了ajax請求,則有可能是get也有可能是post請求。

後來觀察發現網址變成了:

https://gank.io/special/Girl/page/2

翻頁到第三頁,網址則變成了:

https://gank.io/special/Girl/page/3

因此我們肯定是加載的靜態網頁,因此我們進行翻頁就太簡單了,只需要變化請求網頁的網址即可。於是我們在每一個網頁當中查看當前網址的源代碼,找到圖片源在哪兒:

如下圖所示:

 這樣我們就可以確定圖片的url了,在爬取的時候在後面加上jpg的後綴即可。

 

二.開始編寫代碼

這樣代碼就很簡單了,如下所示:

import requests
import re
import time
from pandas import Series,DataFrame
#1.編寫爬取美女土圖片
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'
}

page_text=''
print("開始網絡爬蟲!!")
for i in range(1,10):
    #對指定url發起的請求url是攜帶參數的
    url = 'https://gank.io/special/Girl/page/'
    url=url+str(i)
    print(url)
    response=requests.get(url=url,headers=headers)
    page_text=page_text+'\n'+response.text
    print("這是第{}輪爬取".format(i))

#print(page_text)

page_text=page_text.split("\n")
#               style="background-image:url(
# 這裏進行正則匹配
url_list=[]
for i in page_text:
    if re.match('               style="background-image:url',i):
        url_list.append(i)
    else:
        pass

i=0
while i<len(url_list):
    url_list[i]='https://gank.io'+eval(url_list[i].split("(")[1].split(")")[0])

    i+=1

#開始下載圖片,每下載成功一次圖片,就會顯示下載成功
for i in url_list:
    image_data=requests.get(i,headers=headers).content
    image_name='/'+i.split("/")[4]
    image_path='./'+image_name+'.jpg'
    with open(image_path,'wb') as fp:
        fp.write(image_data)
        print("{} : 下載成功!".format(image_name))

得解!最後在文件夾裏的圖片如下所示:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章