国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁 » python編程資訊

資訊內(nèi)容

python爬蟲:隨心所欲地爬取百度圖片

極客小將2021-03-05-
簡介文章目錄一、前言二、需要導(dǎo)入的庫三、實現(xiàn)過程1、下載鏈接分析2、代碼分析3、完整代碼四、Blogger'sspeech(免費學(xué)習(xí)推薦:python視頻教程)一、前言之前爬取了很多靜態(tài)網(wǎng)頁的內(nèi)容,包括:小說、圖片等等,今天我來嘗試一下動態(tài)網(wǎng)頁的爬取。眾所周知,百度圖片就是一個動態(tài)網(wǎng)頁。那么,沖
ZYn少兒編程網(wǎng)-https://www.pxcodes.com

文章目錄ZYn少兒編程網(wǎng)-https://www.pxcodes.com

一、前言二、需要導(dǎo)入的庫三、實現(xiàn)過程1、下載鏈接分析2、代碼分析3、完整代碼四、Blogger's speech

(免費學(xué)習(xí)推薦:python視頻教程)ZYn少兒編程網(wǎng)-https://www.pxcodes.com

一、前言ZYn少兒編程網(wǎng)-https://www.pxcodes.com

之前爬取了很多靜態(tài)網(wǎng)頁的內(nèi)容,包括:小說、圖片等等,今天我來嘗試一下動態(tài)網(wǎng)頁的爬取。眾所周知,百度圖片就是一個動態(tài)網(wǎng)頁。那么,沖!沖!!沖?。?!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

二、需要導(dǎo)入的庫ZYn少兒編程網(wǎng)-https://www.pxcodes.com

import requestsimport jsonimport os

三、實現(xiàn)過程ZYn少兒編程網(wǎng)-https://www.pxcodes.com

1、下載鏈接分析

首先,打開百度,搜索一個內(nèi)容,這里搜索的是男神(本人 )——彭于晏

然后,打開抓包工具,選擇XHR選項,按Ctrl+R,然后你會發(fā)現(xiàn),隨著你鼠標(biāo)的滑動,右側(cè)會出現(xiàn)一個又一個的數(shù)據(jù)包。

(這里沒滑動太多,一開始因為滑動太多,錄的GIF超5M了)ZYn少兒編程網(wǎng)-https://www.pxcodes.com

然后,選一個包,查看它的headers,如圖:
ZYn少兒編程網(wǎng)-https://www.pxcodes.com

截取之后,粘貼在記事本上,作為一個URL,后文會用到。

這里有很多很多的參數(shù),我也不知道具體哪些是可以忽略的,后文就索性全復(fù)制下來了,具體看后文。ZYn少兒編程網(wǎng)-https://www.pxcodes.com

到這里,能夠直接觀察到的內(nèi)容就結(jié)束了,接下來,借助代碼,幫我們打開另一個世界的大門ZYn少兒編程網(wǎng)-https://www.pxcodes.com

沖就完事了!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

2、代碼分析

首先:把上述中的“其它參數(shù)”組在一起。ZYn少兒編程網(wǎng)-https://www.pxcodes.com

自己做的話,**好復(fù)制自己的“其它參數(shù)”。ZYn少兒編程網(wǎng)-https://www.pxcodes.com

之后,我們可以先提取一下試試,并且把編碼格式改成'utf-8'ZYn少兒編程網(wǎng)-https://www.pxcodes.com

url = 'https://image.baidu.com/search/acjson?' param = { 'tn': 'resultjson_com', 'logid': ' 7517080705015306512', 'ipn': 'rj', 'ct': '201326592', 'is': '', 'fp': 'result', 'queryWord': '彭于晏', 'cl': '2', 'lm': '-1', 'ie': 'utf-8', 'oe': 'utf-8', 'adpicid': '', 'st': '', 'z': '', 'ic': '', 'hd': '', 'latest': '', 'copyright': '', 'word': '彭于晏', 's': '', 'se': '', 'tab': '', 'width': '', 'height': '', 'face': '', 'istype': '', 'qc': '', 'nc': '1', 'fr': '', 'expermode': '', 'force': '', 'cg': 'star', 'pn': '30', 'rn': '30', 'gsm': '1e', } # 將編碼形式轉(zhuǎn)換為utf-8 response = requests.get(url=url, headers=header, params=param) response.encoding = 'utf-8' response = response.text print(response)

運行結(jié)果如下:

看上去挺亂的哈,沒事,我們給包裝一下!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

在上面的基礎(chǔ)上加上:ZYn少兒編程網(wǎng)-https://www.pxcodes.com

# 把字符串轉(zhuǎn)換成json數(shù)據(jù) data_s = json.loads(response) print(data_s)

運行結(jié)果如下:

和上面相比,已經(jīng)明晰很多了,但依舊不夠明確,為什么呢?因為它打印的格式不方便我們觀看! ZYn少兒編程網(wǎng)-https://www.pxcodes.com

對此,有兩種解決辦法。ZYn少兒編程網(wǎng)-https://www.pxcodes.com

①導(dǎo)入pprint庫,接著輸入pprint.pprint(data_s),就能打印啦,如下圖ZYn少兒編程網(wǎng)-https://www.pxcodes.com

ZYn少兒編程網(wǎng)-https://www.pxcodes.com

②使用json在線解析器(自行百度),結(jié)果如下:
ZYn少兒編程網(wǎng)-https://www.pxcodes.com

解決掉上一步,我們會發(fā)現(xiàn),想要的數(shù)據(jù)都在data里面!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

那么就提取吧!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

a = data_s["data"] for i in range(len(a)-1): # -1是為了去掉上面那個空數(shù)據(jù) data = a[i].get("thumbURL", "not exist") print(data)

結(jié)果如下:

到這里,已經(jīng)成功90%啦,剩下的就是保存和優(yōu)化代碼了!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

3、完整代碼

這部分和上面有些許不同,仔細(xì)看看就會發(fā)現(xiàn)嗷!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

# -*- coding: UTF-8 -*-""" @Author :遠(yuǎn)方的星 @Time : 2021/2/27 17:49 @CSDN :https://blog.csdn.net/qq_44921056 @騰訊云 : https://cloud.tencent.com/developer/user/8320044 """import requestsimport jsonimport osimport pprint# 創(chuàng)建一個文件夾path = 'D:/百度圖片'if not os.path.exists(path): os.mkdir(path)# 導(dǎo)入一個請求頭header = { 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}# 用戶(自己)輸入信息指令keyword = input('請輸入你想下載的內(nèi)容:')page = input('請輸入你想爬取的頁數(shù):')page = int(page) + 1n = 0pn = 1# pn代表從第幾張圖片開始獲取,百度圖片下滑時默認(rèn)一次性顯示30張for m in range(1, page): url = 'https://image.baidu.com/search/acjson?' param = { 'tn': 'resultjson_com', 'logid': ' 7517080705015306512', 'ipn': 'rj', 'ct': '201326592', 'is': '', 'fp': 'result', 'queryWord': keyword, 'cl': '2', 'lm': '-1', 'ie': 'utf-8', 'oe': 'utf-8', 'adpicid': '', 'st': '', 'z': '', 'ic': '', 'hd': '', 'latest': '', 'copyright': '', 'word': keyword, 's': '', 'se': '', 'tab': '', 'width': '', 'height': '', 'face': '', 'istype': '', 'qc': '', 'nc': '1', 'fr': '', 'expermode': '', 'force': '', 'cg': 'star', 'pn': pn, 'rn': '30', 'gsm': '1e', } # 定義一個空列表,用于存放圖片的URL image_url = list() # 將編碼形式轉(zhuǎn)換為utf-8 response = requests.get(url=url, headers=header, params=param) response.encoding = 'utf-8' response = response.text # 把字符串轉(zhuǎn)換成json數(shù)據(jù) data_s = json.loads(response) a = data_s["data"] # 提取data里的數(shù)據(jù) for i in range(len(a)-1): # 去掉**后一個空數(shù)據(jù) data = a[i].get("thumbURL", "not exist") # 防止報錯key error image_url.append(data) for image_src in image_url: image_data = requests.get(url=image_src, headers=header).content # 提取圖片內(nèi)容數(shù)據(jù) image_name = '{}'.format(n+1) + '.jpg' # 圖片名 image_path = path + '/' + image_name # 圖片保存路徑 with open(image_path, 'wb') as f: # 保存數(shù)據(jù) f.write(image_data) print(image_name, '下載成功啦?。?!') f.close() n += 1 pn += 29

運行結(jié)果如下:


友情提示:
①:一頁是30張
②:輸入的內(nèi)容可以很多變:比如橋、月亮、太陽、胡歌、趙麗穎等等。 ZYn少兒編程網(wǎng)-https://www.pxcodes.com

四、Blogger’s speechZYn少兒編程網(wǎng)-https://www.pxcodes.com

希望大家可以,點贊、關(guān)注、收藏,三連支持一下!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

大量免費學(xué)習(xí)推薦,敬請訪問python教程(視頻)ZYn少兒編程網(wǎng)-https://www.pxcodes.com

以上就是python爬蟲:隨心所欲地爬取百度圖片的詳細(xì)內(nèi)容,更多請關(guān)注少兒編程網(wǎng)其它相關(guān)文章!ZYn少兒編程網(wǎng)-https://www.pxcodes.com

預(yù)約試聽課

已有385人預(yù)約都是免費的,你也試試吧...

主站蜘蛛池模板: 定安县| 东港市| 隆安县| 忻城县| 和政县| 咸阳市| 长子县| 金塔县| 信丰县| 清徐县| 沙洋县| 六安市| 台前县| 芜湖市| 定州市| 响水县| 喀喇| 进贤县| 乐亭县| 老河口市| 滁州市| 会理县| 高安市| 祁连县| 南昌市| 出国| 福州市| 江津市| 安龙县| 乌拉特后旗| 连山| 宝清县| 富蕴县| 名山县| 雅江县| 鞍山市| 宜宾县| 平谷区| 怀远县| 无锡市| 浪卡子县|