大家好,我是辣條,
前言
朋友快過生日了,不知道送啥禮物【絕對不是因為我摳】,想著他非常喜歡打籃球,籃球他很多個了,應該也不會缺【不會是因為籃球貴】,那我就用技術白嫖點東西送給他吧,爬蟲首當其沖呀,必須安排一波,于是我的靈感來了,爬取一波他喜歡的NBA球星圖片送給他,再整點活合作一張大圖,那效果不就出來了,這波真不錯【辣條送禮物提示:送好朋友或者男女朋友禮物,不要只看價格,要看對方需要什么想要什么,禮輕情意重,主要是省錢…】
領取福利👉
300+Python經典編程案例
50G+學習視頻教程
100+Python初階、中階、高階電子書籍
1000+簡歷模板和匯報PPT模板(轉正、年終等)

爬取目標
網址:百度一下

效果展示

工具準備
開發工具:Visual Studio Code
開發環境:python3.7, Windows10
使用工具包:requests
專案決議思路
獲取當當前網頁的跳轉地址,當前頁面為主頁面資料,我們需要的資料別有一番天地,獲取到網頁資訊提取出所有的跳轉地址,獲取到原始碼里的a標簽就行當前網頁的加載方式為靜態資料,直接請求網頁地址;
url = 'https://image.baidu.com/search/acjson?
從源代碼里提取到所以的跳轉地址

【這是個很簡單的代碼,不做詳細思路決議了,平臺對爬蟲的文章的審核比以前嚴格很多了,代碼我留著,有啥不懂的評論提出,或者私信我,我看到了都會解答】
簡易原始碼分享
import requests
import json
import time
import os
def crawl(page):
if not os.path.exists('D://111'):
os.mkdir('D://111')
url = 'https://image.baidu.com/search/acjson?'
header = {
# 'Referer': 'https://image.baidu.com/search/index?ct=201326592&cl=2&st=-1&lm=-1&nc=1&ie=utf-8&tn=baiduimage&ipn=r&rps=1&pv=&fm=rs4&word',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
param = {
"tn": "resultjson_com",
"logid": "11007362803069082764",
"ipn": "rj",
"ct": "201326592",
"is": "",
"fp": "result",
"queryWord": "NBA",
"cl": "2",
"lm": "-1",
"ie": "utf-8",
"oe": "utf-8",
"adpicid": "",
"st": "-1",
"z": "",
"ic": "",
"hd": "",
"latest": "",
"copyright": "",
"word": "NBA",
"s": "",
"se": "",
"tab": "",
"width": "",
"height": "",
"face": "0",
"istype": "2",
"qc": "",
"nc": "1",
"fr": "",
"expermode": "",
"force": "",
"pn": page,
"rn": "30",
"gsm": "1e",
"1615565977798": "",
}
response = requests.get(url, headers=header, params=param)
img = response.text
j = json.loads(img)
# print(j)
img_list = []
for i in j['data']: #獲得j字典資料里面的data所對應的值 值是一個串列 通過for回圈拿去串列里的每一個元素
if 'thumbURL' in i:
# print(i['thumbURL'])
img_list.append(i['thumbURL']) #追加到串列中
print(len(img_list)) #列印URL的數量
for count,n in enumerate(img_list):
r = requests.get(n, headers=header)
with open(f'D://111/{count+1}.jpg', 'wb') as f:
f.write(r.content)
# count += 1
# if __name__ == '__main__':
for i in range(30, 61, 10): #起始值 終點值 步長
t1 = time.time()
crawl(i)
t2 = time.time()
t = t2 - t1
print(f'page {i//30} is over!!! 耗時{t:.2f}秒!') #.2f兩位小數
【PS:最后還是會發紅包給朋友的,很好的關系,調侃歸調侃,但是紅包不能少】
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379529.html
標籤:其他
