實驗網站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html
在下面這種類型文件中的請求頭的url打開后會得到一個頁面
你會得到如下圖一樣的頁面
你將頁面上zoom對應的值在一個新的網頁打開之后會發現,這個就是ppt中的圖片
你可以多打開幾個“getrequest?doc_id”類型的請求頭看一下它們的Request URL,你會發現我們只需要改變pn對應的數字就能得到文庫中對應的PPT圖片
知道了這個我們就可以先把圖片url弄出來,然后再依次訪問這些url,並下載至本地
要注意的是,如下面的url地址
https:\/\/wkretype.bdimg.com\/retype\/zoom\/c7752014f18583d04964594d?pn=4&raww=1080&rawh=810&o=jpg_6&md5sum=046b21875cb4e60170f5521eea9253dc&sign=22044930c7&png=102985-135328&jpg=219095-369954
你如果復制之后粘貼在瀏覽器的地址框里面,瀏覽器會把這個地址轉化成下面這個類型之后再去訪問
https://wkretype.bdimg.com//retype//zoom//c7752014f18583d04964594d?pn=4&raww=1080&rawh=810&o=jpg_6&md5sum=046b21875cb4e60170f5521eea9253dc&sign=22044930c7&png=102985-135328&jpg=219095-369954
所以在我們得到地址之后用一些函數處理一下就可以了
因為代碼不太復雜,所以就不再詳細敘述了
import requests class Spider: def __init__(self): #定義url前綴 self.url_pre = "https://wenku.baidu.com/browse/getrequest?doc_id=c7752014f18583d04964594d&pn=" #定義url后綴 self.url_suf = "&rn=1&type=ppt&callback=bd__cbs__sv0n59" #請求頭 self.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36' } def Create_url(self): num = input('輸入爬取ppt總頁數:') for i in range(1,int(num)+1): #構建對應頁數PPT的url地址 self.url = self.url_pre+str(i)+self.url_suf #請求后得到頁面源碼 response = requests.get(self.url,headers=self.headers) html = response.text #因為我們需要從頁面源碼中拿到PPT中圖片對應地址,所以可以通過字符串匹配等方式得到,這里我就用數組查找就行 #找出圖片地址在源碼中起始和終止位置 start = html.find(':"http') + 2 end = html.find('","') #切割字符串 url_pic = html[start:end] #將圖片url字符串,轉化為可訪問的url地址 url_pic=url_pic.replace('\\','') #print(url_pic) self.request_pic(url_pic,i) def request_pic(self,url_pic,num): #print(url_pic) response = requests.get(url_pic, headers=self.headers) num = str(num)+'.png' with open(num,'wb') as f: f.write(response.content) if __name__ == '__main__': spider = Spider() spider.Create_url()