Python《回車桌面圖片》
今天我們爬取另一個桌布網站https://tu.enterdesk.com/
進入首頁後:
可以發現有很多的分類,我們直接按照分類來分別爬取。
比如點選一個分類【美女】。https://tu.enterdesk.com/meinv/
會有很多的照片條目。然後不斷往下翻的時候也是不斷在重新整理更新,經觀察network的XHR會發現,每一次的非同步請求都是一個html頁面哈。分析url如下:
https://tu.enterdesk.com/meinv/
https://tu.enterdesk.com/meinv/2.html
https://tu.enterdesk.com/meinv/3.html
https://tu.enterdesk.com/meinv/4.html
………
所以https://tu.enterdesk.com/meinv/ 也等於https://tu.enterdesk.com/meinv/1.html
接著來看看圖片,這裡肯定顯示的是縮圖。這裡的圖片條目點選進去不是組圖,而是單張圖片。
我們點選一張圖片進去後發現,高清的原圖如下:
我們看這個img的地址有點熟悉,對比下縮圖的高清圖的地址:
縮圖:
https://up.enterdesk.com/edpic_360_360/63/e5/a2/63e5a27adfd808429e89e70ad55cdbbd.jpg
高清圖:
https://up.enterdesk.com/edpic_source/63/e5/a2/63e5a27adfd808429e89e70ad55cdbbd.jpg
也就是一個目錄的區別(edpic_360_360 和 edpic_source)
也就是說可以不用點選進去,直接從縮圖的地址就可以得到高清圖的地址。
太簡單了!
完整程式碼如下:
import time
from concurrent.futures import ThreadPoolExecutor
import time
import os
import re
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
rootrurl = 'https://tu.enterdesk.com'
save_dir = 'D:/estimages/'
MAX_PAGES = 100
headers = {
"Referer": rootrurl,
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive'
} ###設定請求的頭部,偽裝成瀏覽器
def saveOneImg(dir, img_url, title):
new_headers = {
"Referer": img_url,
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive'
} ###設定請求的頭部,偽裝成瀏覽器,實時換成新的 header 是為了防止403 http code問題,防止反盜鏈,
try:
img = requests.get(img_url, headers=new_headers) # 請求圖片的實際URL
if (str(img).find('200') > 1):
with open(
'{}/{}.{}'.format(dir, title, img_url.split('.')[-1]), 'wb') as jpg: # 請求圖片並寫進去到本地檔案
jpg.write(img.content)
print(img_url)
jpg.close()
return True
else:
return False
except Exception as e:
print('exception occurs: ' + img_url)
print(e)
return False
def getSubTitleName(str):
cop = re.compile("[^\u4e00-\u9fa5^a-z^A-Z^0-9]") # 匹配不是中文、大小寫、數字的其他字元
string1 = cop.sub('', str) # 將string1中匹配到的字元替換成空字元
return string1
def processOnePage(dir, smallImgs):
for img in smallImgs:
src = img.get('src').replace('edpic_360_360', 'edpic_source')
title = img.get('title')
saveOneImg(dir, src, getSubTitleName(title))
pass
def oneSpider(tag, url):
if not os.path.exists(tag):
os.makedirs(tag)
for i in range(1, (MAX_PAGES + 1)):
suburl = '{}{}.html'.format(url, i)
html = BeautifulSoup(requests.get(suburl, headers=headers).text, features="html.parser")
smallImgs = html.find('div', {'class': 'egeli_pic_m center'}).find_all('img')
processOnePage(tag, smallImgs)
pass
def getTagList():
taglist = {}
html = BeautifulSoup(requests.get(rootrurl, headers=headers).text, features="html.parser")
a_s = html.find('div', {'class': 'list_sel_box'}).find('ul').find_all('a')[1:]
for a in a_s:
taglist['{}{}/'.format(save_dir, a.get_text())] = '{}{}'.format(rootrurl, a.get('href'))
return taglist
if __name__ == '__main__':
tagList = getTagList()
print(tagList)
# 給每個標籤配備一個執行緒
with ThreadPoolExecutor(max_workers=30) as t: # 建立一個最大容納數量為20的執行緒池
for tag, url in tagList.items():
t.submit(oneSpider, tag, url)
# just for test
# oneSpider('D:/estimages/美女/', 'https://tu.enterdesk.com/meinv/')
# 等待所有執行緒都完成。
while 1:
print('-------------------')
time.sleep(1)
效果如下:
相關文章
- Python《必應bing桌面圖片爬取》Python
- 【python】圖片插入文字Python
- Python 下載圖片Python
- Python批次裁剪圖片Python
- python批量ppt轉圖片,pdf轉圖片,word轉圖片指令碼Python指令碼
- python多工抓取圖片Python
- Python批量處理圖片Python
- windows10桌面圖片打不開怎麼辦 windows10無法開啟桌面圖片處理方法Windows
- element上傳圖片元件使用方法|圖片回顯|格式轉換base64元件
- python 讀圖片效能測試Python
- Python 提取PDF文字和圖片Python
- python自動下載圖片Python
- python使用pillow和opencv生成圖片縮圖PythonOpenCV
- 用python來給圖片加水印Python
- 01-Python 圖片轉字元畫Python字元
- python去除圖片白邊黑邊Python
- python - 圖片灰度化、二值化Python
- python request.post圖片和字典Python
- python 裁剪圖片;位深度不變Python
- python實現橫向拼接圖片Python
- python opencv讀取網路圖片PythonOpenCV
- python使用OpenCV設定圖片尺寸PythonOpenCV
- python九宮格圖片的原理Python
- 如何用python建立詞雲圖片Python
- Python資料展示 - 生成表格圖片Python
- python sift 特徵匹配 圖片相似度Python特徵
- Python:圖片合視訊(最簡)Python
- IOS14桌面佈局圖片怎麼設定iOS
- 吸塵車種類,吸塵車廠家報價及圖片
- win10如何填充多張圖片 win10桌面填充多張圖片怎麼設定Win10
- Python學習筆記 - 下載圖片Python筆記
- Python 做圖片清晰度識別Python
- python版網文圖片生成器Python
- Python 批次合併圖片到word文件Python
- 手機使用python操作圖片檔案Python
- 基於python的文字轉圖片工具Python
- 【Python】批量給圖片增加水印工具Python
- Python中scrapy下載儲存圖片Python