抓取某網(wǎng)站一分類下所有的圖片(python小白登天日記)

廢話先不多說课锌,先上代碼:
<pre class="hljs python">
<code class='python'>
import requests
from bs4 import BeautifulSoup
import os,re
import sys
reload(sys)
sys.setdefaultencoding('utf8')

url = 'http://www.bfpgf.com/yld'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }#寫一個headers

def get_soup(url):#獲取bs4的對象
r = requests.get(url,headers=headers) # 使用requests獲取網(wǎng)頁,在這添加請求頭产阱,應對反爬蟲
print r.status_code
soup = BeautifulSoup(r.content, 'html.parser') # 把頁面處理成bs的對象狡赐,好進行下一步操作
return soup#返回bs4對象

def download_img(url,page_number):
soup = get_soup(url)
img_urls = soup.article.find_all('img')
numerb_of_arr = len(img_urls)#獲取當前頁面圖片的數(shù)量
title = soup.find_all('h1',attrs={'class':'article-title'})#獲取到標題所在的標簽
dir_name = title[0].a.text#設置文件夾的名字
if os.path.isdir(dir_name):#判斷當前目錄下是否有文件夾存在稚虎,不存在的話創(chuàng)建一個與標題名稱相同的文件夾
pass
else:
os.mkdir(dir_name)
for index , img_url in enumerate(img_urls):#獲取序列號方便寫圖片的名字
file_name_suffix = re.findall(r'.[^./:*?<>|rn]+$', img_url['src'])[0]#通過正則獲取圖片的格式
img_index = page_number + index#計算這是第幾張圖片
img_name = str(img_index) + str(file_name_suffix)#拼接出圖片的名稱
file_name = os.path.join(dir_name,img_name)
url_download_img = 'http://www.bfpgf.com' + img_url['src']
print '開始下載第' + ' ' + str(img_index+1) + ' ' + '張圖片'
req = requests.get(url_download_img,headers=headers)
img = req.content
with open(file_name, 'wb') as f:
f.write(img)
page_number += numerb_of_arr#為了圖片名稱計算出之前頁面有多少圖片
if len(soup.find_all('a',attrs={'class':'nextpostslink'}))!=0:
next_url = soup.find_all('a',attrs={'class':'nextpostslink'})[0]['href']#下一頁的地址
print next_url
download_img(next_url,page_number)

def get_target_url(url):
soup = get_soup(url)
target_urls = soup.find_all('h2')
for target_url in target_urls:# 在這調(diào)用下載圖片的方法
print '\n' + '正在抓取' + ' ' + str(target_url.a['title']) + '\n'
download_img(target_url.a['href'],0)
if soup.find('li', attrs={'class': 'next-page'}).a:# 如果有下一頁的話
print '\n' + '開始抓取下一頁' + '\n'
next_page_url = soup.find('li', attrs={'class': 'next-page'}).a['href']
get_target_url(next_page_url)
else:
print '\n' + '全站抓取完成'
get_target_url(url)
</code>
這一次抓的還是一個開車網(wǎng)站乡范,測試了一下還是需要添加headers的。
本來這周想直接上sracpy生年,然后看了幾天關于它的教程婴程,比如 廖雪峰 老師和大神 靜覓 的,但是感覺自己沒有需求抱婉,強行搞一個需求寫起來實在不順心档叔,所以思前想后還是先別用scrapy了吧,雖然我都裝好寫了一個小小的爬蟲了蒸绩。

上次寫的關于lofter想抓全站或者排名前幾的攝影社的圖片衙四,可是實在搞不懂通用的標識,當然肯定是我太菜了患亿,沒有找到传蹈,不過沒事,這次找到了<a >這個網(wǎng)站</a>
開車是我最喜歡的事兒了步藕,更何況還能用代碼飆車卡睦,運行程序之后會自動創(chuàng)建文件夾并且下載對應的圖片到文件夾里,如圖:

練習用的文件夾

說實話漱抓,還有一個問題沒有完美解決,就是

如何判斷當前文件已經(jīng)存在恕齐,不需再次下載

因為現(xiàn)在實在有點晚乞娄,所以這個問題暫時不解決,留著明天看一看显歧。
不過這次結(jié)局了上次1024無法下載圖片的問題仪或,也是明天我試試,原來下載圖片也可以帶headers啊士骤,這么說的話requests比urllib好用多了范删。

為了寫多頁面的圖片下載,我用了兩次遞歸拷肌,直到?jīng)]有下一頁到旦,程序就停止運行了。

運行中

<code>get_soup(url)</code>這個函數(shù)我更是用了兩次巨缘,雖然沒提高多大的效率添忘,不過也是第一次在python里復用~還是挺開心的。

其余沒有多大的問題若锁,就是在urllib用urlretrieve下載的時候只能下載一個搁骑,然后讓大侄子去運行卻能全部下載,沒辦法,只能換了requests的下載并且?guī)狭薶eaders仲器,然后就完美的運行成功了煤率。

最后一句話送給大家

飆車有風險,開車需謹慎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏冀,一起剝皮案震驚了整個濱河市蝶糯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煤辨,老刑警劉巖裳涛,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異众辨,居然都是意外死亡端三,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門鹃彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郊闯,“玉大人,你說我怎么就攤上這事蛛株⊥帕蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵谨履,是天一觀的道長欢摄。 經(jīng)常有香客問我,道長笋粟,這世上最難降的妖魔是什么怀挠? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮害捕,結(jié)果婚禮上绿淋,老公的妹妹穿的比我還像新娘。我一直安慰自己尝盼,他們只是感情好吞滞,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盾沫,像睡著了一般裁赠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赴精,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天组贺,我揣著相機與錄音,去河邊找鬼祖娘。 笑死失尖,一個胖子當著我的面吹牛啊奄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掀潮,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼菇夸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仪吧?” 一聲冷哼從身側(cè)響起笆凌,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤裙盾,失蹤者是張志新(化名)和其女友劉穎凯旋,沒想到半個月后辟犀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡出皇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年羞芍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊艘。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荷科,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纱注,到底是詐尸還是另有隱情畏浆,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布狞贱,位于F島的核電站刻获,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞎嬉。R本人自食惡果不足惜将鸵,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佑颇。 院中可真熱鬧,春花似錦草娜、人聲如沸挑胸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茬贵。三九已至,卻和暖如春移袍,著一層夾襖步出監(jiān)牢的瞬間解藻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工葡盗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留螟左,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像胶背,于是被迫代替她去往敵國和親巷嚣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容