日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php爬去百度图片,python爬虫:随心所欲地爬取百度图片

發(fā)布時(shí)間:2023/12/19 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php爬去百度图片,python爬虫:随心所欲地爬取百度图片 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄一、前言

二、需要導(dǎo)入的庫

三、實(shí)現(xiàn)過程

1、下載鏈接分析

2、代碼分析

3、完整代碼

四、Blogger's speech

一、前言

之前爬取了很多靜態(tài)網(wǎng)頁的內(nèi)容,包括:小說、圖片等等,今天我來嘗試一下動(dòng)態(tài)網(wǎng)頁的爬取。眾所周知,百度圖片就是一個(gè)動(dòng)態(tài)網(wǎng)頁。那么,沖!沖!!沖!!!

二、需要導(dǎo)入的庫import requestsimport jsonimport os

三、實(shí)現(xiàn)過程

1、下載鏈接分析

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

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

(這里沒滑動(dòng)太多,一開始因?yàn)榛瑒?dòng)太多,錄的GIF超5M了)

然后,選一個(gè)包,查看它的headers,如圖:

截取之后,粘貼在記事本上,作為一個(gè)URL,后文會(huì)用到。

這里有很多很多的參數(shù),我也不知道具體哪些是可以忽略的,后文就索性全復(fù)制下來了,具體看后文。

到這里,能夠直接觀察到的內(nèi)容就結(jié)束了,接下來,借助代碼,幫我們打開另一個(gè)世界的大門

沖就完事了!

2、代碼分析

首先:把上述中的“其它參數(shù)”組在一起。

自己做的話,最好復(fù)制自己的“其它參數(shù)”。

之后,我們可以先提取一下試試,并且把編碼格式改成'utf-8'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)

運(yùn)行結(jié)果如下:

看上去挺亂的哈,沒事,我們給包裝一下!

在上面的基礎(chǔ)上加上:# 把字符串轉(zhuǎn)換成json數(shù)據(jù)

data_s = json.loads(response)

print(data_s)

運(yùn)行結(jié)果如下:

和上面相比,已經(jīng)明晰很多了,但依舊不夠明確,為什么呢?因?yàn)樗蛴〉母袷讲环奖阄覀冇^看!

對(duì)此,有兩種解決辦法。

①導(dǎo)入pprint庫,接著輸入pprint.pprint(data_s),就能打印啦,如下圖

②使用json在線解析器(自行百度),結(jié)果如下:

解決掉上一步,我們會(huì)發(fā)現(xiàn),想要的數(shù)據(jù)都在data里面!

那么就提取吧!a = data_s["data"]

for i in range(len(a)-1): # -1是為了去掉上面那個(gè)空數(shù)據(jù)

data = a[i].get("thumbURL", "not exist")

print(data)

結(jié)果如下:

到這里,已經(jīng)成功90%啦,剩下的就是保存和優(yōu)化代碼了!

3、完整代碼

這部分和上面有些許不同,仔細(xì)看看就會(huì)發(fā)現(xiàn)嗷!# -*- 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)建一個(gè)文件夾path = 'D:/百度圖片'if not os.path.exists(path):

os.mkdir(path)# 導(dǎo)入一個(gè)請(qǐng)求頭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('請(qǐng)輸入你想下載的內(nèi)容:')page = input('請(qǐng)輸入你想爬取的頁數(shù):')page = int(page) + 1n = 0pn = 1# pn代表從第幾張圖片開始獲取,百度圖片下滑時(shí)默認(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',

}

# 定義一個(gè)空列表,用于存放圖片的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): # 去掉最后一個(gè)空數(shù)據(jù)

data = a[i].get("thumbURL", "not exist") # 防止報(bào)錯(cuò)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

運(yùn)行結(jié)果如下:

友情提示:

①:一頁是30張

②:輸入的內(nèi)容可以很多變:比如橋、月亮、太陽、胡歌、趙麗穎等等。

四、Blogger’s speech

希望大家可以,點(diǎn)贊、關(guān)注、收藏,三連支持一下!大量免費(fèi)學(xué)習(xí)推薦,敬請(qǐng)?jiān)L問python教程(視頻)

總結(jié)

以上是生活随笔為你收集整理的php爬去百度图片,python爬虫:随心所欲地爬取百度图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。