我前幾篇文章都是說一些python爬蟲庫的用法,還沒有說怎樣利用好這些知識玩一些好玩的東西。那我今天帶大家玩好玩又刺激的,嘻嘻!對了,requests庫和正則表達式很重要的,一定要學會!一定要學會!!一定要學會!!!我現在的爬蟲基本都是用這兩樣東西來爬的。所以學不學你看着辦吧。
來到今天的重點,我今天發現一個網站很好爬的,非常適合新手,我沒有設置請求頭什么的爬了很多遍很沒有封我ip和給我返回403之類的,所以他對我們第一次玩爬蟲的人來說很友好。這個網站就是今日頭條。
這里我給大家整理了一套Python學習視頻和爬蟲項目實戰,大家都可以領取學習!領取方式請到文末。
我們今天要爬的就是他的圖集,先看看網站。搜索美女,然后點擊圖集,可以看到下面這些內容
我們要做的就是把上面的圖片給爬下來。
那開始分析網站。按下f12,然后點擊network,刷新下你可以看到這些
進行尋找哪個請求返回這些圖片的,在網頁上可以看到圖片會隨着你下拉網頁而進行顯示更多的圖片,這是動態加載的,所以可以輕松知道這個可以在xhr文件中找到,果然,你看
不斷往下拉,不斷地發送請求,點擊這個請求看看是返回什么數據
可以看到這是個json,里面有圖片的url,這個就是我們要找的東西,那我們可以用json庫來解析,還有這個網站是get請求,這樣就可以用requests庫來發送然后解析下就可以了,非常簡單。
那么分析就到這里,直接上代碼
import requests, ospath_a = os.path.abspath('.')kw = ''while True: kw = input('請輸入你要獲取的圖片(若想結束請輸入1)') if kw == '1': print('已退出,你下載的圖片已保存在'+path_a+',請查看!') break for x in range(0, 1000, 20): url = 'https://www.toutiao.com/search_content/?offset='+str(x)+'&format=json&keyword=%s&autoload=true&count=20&cur_tab=3&from=gallery' % kw response = requests.get(url) data = response.json()['data'] if not data: print('下載'+kw+'圖片完畢,請換個關鍵詞繼續') break n = 1 # 記錄文章數 for atlas in data: # 創建目錄 title = atlas['title'] print(atlas) try: if title not in os.listdir('.'): # 防止文件名已經存在 os.mkdir(title) except OSError as e: print('文件名出錯,創建目錄失敗,重新創建一個隨機名字') title = kw + '文件名出錯'+str(x) if title not in os.listdir('.'): os.mkdir(title) k = 1 # 記錄下載的圖片數 path = os.path.join(path_a, title) # 轉進圖片目錄 os.chdir(path) for image in atlas['image_list']: # 這個鏈接獲取的圖片是小張的,看着不夠爽,所以下面替換成大的圖片 image_url = image['url'].replace('list', 'large') # 改個鏈接獲取大的圖片 atlas = requests.get('http:'+image_url).content with open(str(k)+'.jpg', 'wb') as f: # 把圖片寫入文件內 f.write(atlas) print('下載完第%d個文章的%d幅圖完成' % (x+n, k)) k += 1 n += 1 # 轉出圖片目錄 os.chdir(path_a)
這個只用了requests庫基本就能完成了,os庫是用來操作文件目錄的,這里就不詳細說了。可以看到,代碼量非常少,除開注釋就大概四十行吧,是不是比其他語言簡潔多了?是不是requests庫很好用?這里可以充分體現了人生苦短,我用python的真理。
這里我給大家整理了一套Python學習視頻和爬蟲項目實戰,大家都可以領取學習!領取方式請到文末。
python 爬蟲項目實戰
python基礎語法講解
python之mysql教程
人工智能+Python基礎班
獲取方式:
關注微信公眾號:大數據技術匯
關注后在公眾平台上回復"Python"。(注意是公眾平台回復)
如果大家覺得有用,可以轉發分享給更多的朋友!