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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

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

文章目錄一、前言

二、需要導入的庫

三、實現(xiàn)過程

1、下載鏈接分析

2、代碼分析

3、完整代碼

四、Blogger's speech

一、前言

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

二、需要導入的庫import requestsimport jsonimport os

三、實現(xiàn)過程

1、下載鏈接分析

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

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

(這里沒滑動太多,一開始因為滑動太多,錄的GIF超5M了)

然后,選一個包,查看它的headers,如圖:

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

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

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

沖就完事了!

2、代碼分析

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

自己做的話,最好復制自己的“其它參數(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)

運行結果如下:

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

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

data_s = json.loads(response)

print(data_s)

運行結果如下:

和上面相比,已經(jīng)明晰很多了,但依舊不夠明確,為什么呢?因為它打印的格式不方便我們觀看!

對此,有兩種解決辦法。

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

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

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

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

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

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

print(data)

結果如下:

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

3、完整代碼

這部分和上面有些許不同,仔細看看就會發(fā)現(xiàn)嗷!# -*- coding: UTF-8 -*-"""

@Author :遠方的星

@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)# 導入一個請求頭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代表從第幾張圖片開始獲取,百度圖片下滑時默認一次性顯示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

運行結果如下:

友情提示:

①:一頁是30張

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

四、Blogger’s speech

希望大家可以,點贊、關注、收藏,三連支持一下!大量免費學習推薦,敬請訪問python教程(視頻)

總結

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

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