我是在B站上看到的一個視頻,視頻不長就40分鐘,對新手來說很好,簡單易懂還能激發興趣(當看到我的代碼爬到了那麼多妹子圖時,我對爬蟲的興趣頓時暴漲了許多)。下邊也分享了我的代碼,代碼不長有註釋,很簡單。視頻鏈接如下,有興趣的話可以看下https://www.bilibili.com/video/av75562300?from=search&seid=16725157051954348830。
有圖有真相,下圖是我爬取到妹子,代碼中我設置了爬取11個妹子,所以就顯示了這幾個文件夾。
我的代碼如下,是稍加修改過的。
"""請求網頁"""
import requests
import re
import time
import os
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
#爬取所有妹子的網頁
response = requests.get("https://www.vmgirls.com/",headers=headers)
html = response.text
"""解析網頁"""
def jiexi(html):
dir_name = re.findall('<h1 class="post-title h3">(.*?)</h1>',html)[-1]
if not os.path.exists(dir_name):
os.mkdir(dir_name)
urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?" .*?></a>', html)
return dir_name,urls
"""保存圖片"""
def saveImg(urls,dir_name):
for url in urls:
#time.sleep(1)#延時1秒再爬,防止把網站爬崩
file_name = url.split('/')[-1]
response = requests.get(url, headers=headers,timeout=10)
with open(dir_name+'/'+file_name,'wb') as f:
print(file_name)
f.write(response.content)
#開始爬取
urls = re.findall('<a href="(.*?)" .*?>.*?</a>',html) #所有妹子的頁面
def mistaken():
try:
pass
except:
mistaken()
number_mei = 11 #爬取妹子數量,可以自己設置
cur_number = 0 #當前妹子數量
for url in urls:
if(cur_number<=number_mei):
try:
cur_number += 1
print('-------------第%d個妹子-------------' % cur_number)
response = requests.get(url, headers=headers)
html = response.text
dir_one_meizi,urls_one_meizi = jiexi(html)
saveImg(urls_one_meizi,dir_one_meizi)
except:
mistaken()
cur_number-=1
else:
break