python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片
生活随笔
收集整理的這篇文章主要介紹了
python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言:
如今的高速網(wǎng)絡極大促進了信息的展示方式,高清圖片,視頻等成就了我們的視聽盛宴。但是,我們獲取到的圖片或者視頻可能是被壓縮過的,所以總體上還是有點小瑕疵,今天呢,我給大家?guī)硪黄褂肞ython爬取著名高清圖片網(wǎng)站500px圖片的文章,這個爬蟲具有搜索功能哦。讓你感受攝影魅力!
通過這篇文章的學習,你將學會:
- 使用requests庫發(fā)起請求
- 將requests請求結果轉化為json類型
- 提取json類型的數(shù)據(jù)
- 寫入圖像類型文件
Python環(huán)境搭建可以參考這里
順手牽羊:Python 環(huán)境搭建?zhuanlan.zhihu.com整體流程圖
實戰(zhàn):
2.導入 rrequests庫
import requests3. json數(shù)據(jù)類型介紹
json是一種數(shù)據(jù)存儲方式,它可以看做字典和列表的組合,列表可以是字典的值,字典可以是列表中的項目 一下例子可能會讓你更容易理解# json是一種數(shù)據(jù)存儲方式,類python的字典,例如下面json_example={"name":"Mike", "hoobby":["Ball","game"], "address":[{"city":"New York"},{"street":"Center Street"}] } # 上面的json_example就是一個簡單的json數(shù)據(jù)的實例 # 可以看到,json類型文件就是字典和列表的組合,列表可以是字典的值,字典 # 下面是獲取指定數(shù)據(jù)的方法 name=json_example['name'] print(name) # 輸出: Mike # 請注意下面的 0,這個0代表 adrress 這個 鍵 對應的值是一個列表 # 0代表列表的第一項,而第一項的鍵 city 所對于的值是New York,所以這樣子可以獲得city city=json_example['address'][0]['city'] print(city) # 輸出 New York# 下面演示在不知道鍵名的情況下遍歷json數(shù)據(jù)中所有內容 for i in json_example:print(i) # 輸出:hoobby address爬取圖片完整代碼
import requests # 接受搜索 key=input("請輸入關鍵詞:")pn=input("請輸入要爬取的頁數(shù):")# input獲取的輸入是字符串格式,而我們想要的頁數(shù)是整數(shù),所以使用 int() 函數(shù)進行類型轉換 # pn代表爬取的圖片總頁數(shù) pn=int(pn)print('。。。。。。開始爬取。。。。。。')# 定義一個列表來存放圖片地址 image_list=[] # 利用循環(huán),依次訪問不同頁碼 for i in range(1,pn+1):print("。。。。。。正在提取第{}頁。。。。。。".format(i))# 這個url是我通過瀏覽器開發(fā)者工具抓取的,對初學者來說難度有點大,建議直接使用就行# 傳遞頁數(shù)和關鍵詞即可使用# 如果想知道怎么獲取,可以私信我,或者在評論區(qū)留言,我教你。url='https://api.500px.com/v1/photos/search?type=photos&term={}&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&include_states=true&formats=jpeg%2Clytro&include_tags=true&exclude_nude=true&page={}&rpp=50'.format(key,i)# 通過requests庫獲的get方法訪問圖片所在頁的地址# requests.get(url).json()表示將獲得的訪問結果轉化為json類型image_json=requests.get(url).json()# print(requests.get(url).text)# 取消上面這句代碼的注釋,再仔細看看json實例介紹,你就知道下面為什么這么寫了data=image_json.get('photos')for i in data:image_url=i.get('images')[8].get('url')# 把圖片地址添加到之前列表中image_list.append(image_url) # 定義一個變量來計算下載成功的圖片個數(shù),并且以它命名圖片 count=0 for image in image_list:print("正在下載第{}張圖片!".format(count+1))image_content=requests.get(image).content# wb表示以二進制的方式寫入文件,w表示覆蓋寫,即創(chuàng)建新文件,或者覆蓋之前同名的文件# b表示二進制方式寫入,圖片,視頻等文件是二進制文件# "{}.jpg".format(count) 表示文件名,count是變量,下載過程中,文件名為:1.jpg , 2.jpg ... with open("{}.jpg".format(count),"wb") as f:f.write(image_content)# 每成功下載一張圖片,count加1count=count+1print("成功下載第{}張圖片!".format(count))print("全部圖片下載完畢,圖片路徑與當前文件相同!")爬取過程圖片:
爬取過程部分成果寫在最后:
希望大家通過本文掌握前文提到的幾個技能,有問題歡迎在評論區(qū)留言或者私信我
總結
以上是生活随笔為你收集整理的python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝塔linux忘记密码,宝塔忘记登录入口
- 下一篇: python制作中文词云_Python如