這隨筆代碼鏈接:http://www.cnblogs.com/yinghualuowu/p/8186375.html
首先我們要知道,一個分區封面顯示到底在哪里可以找到。
很明顯,查看審查元素並不能找到封面。這個時候應該想到封面是動態加載的。
再次去Network尋找,我們發現這樣一個JS。這是右側熱門視頻封面的內容,點開之后存在pic:正是封面的鏈接。
進行json解析之后,判定pic在data>archives結構下。這個時候鏈接是有了,那么將如何把Json拿出來呢?
讓我們觀察一下原來的信息,除去JQuery........()這層,里面就是json字符串了,既然如此簡單,那么我們就...
查找開頭第一個(,然后截取至最后一個),里面不就是了嗎?
def instr(keystr): st=keystr.find('(')+1 strhtml=keystr[st:len(keystr)-1] return strhtml
def picsave(strJson,number): global cnt strdic=strJson['data']['archives'] num=len(strdic) for i in range(0,num,1): cnt=cnt+1 strdic=strJson['data']['archives'][i] print(strdic['pic']) urllib.request.urlretrieve(strdic['pic'],'E:\圖片\dnf\%s.jpg'%(cnt))
然后進行翻頁判斷,我們嘗試點開第一頁和后面幾頁,看看不同。pn數字貌似變化很有規律啊。
於是...
def urlget(num): for i in range(1,num,1): url='https://api.bilibili.com/x/tag/ranking/archives?callback=jQuery172014070206081723846_1514982701564&tag_id=5033&rid=65&type=0&pn='+str(i)+'&ps=20&jsonp=jsonp&_=1514982702144' response=urllib.request.urlopen(url) html=response.read().decode('utf-8') html=instr(html) strJson=eval(html) picsave(strJson,i)
然后,就沒有了。其實要高清大圖的話,你需要點進去一個視頻,然后審查元素,后面我會寫一個輸入av號來獲取封面的代碼