摘要:由于最新的視頻整頓風(fēng)波,內(nèi)涵段子被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)段友的,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有興趣的可以下載看看我不是打廣告的,沒(méi)收廣告費(fèi)的同時(shí),之前同事也發(fā)了一個(gè)貼吧的段子聚居地,客官稍等,馬上奉上
由于最新的視頻整頓風(fēng)波,內(nèi)涵段子APP被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)“段友”的app,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有興趣的可以下載看看(ps:我不是打廣告的,沒(méi)收廣告費(fèi)的)
同時(shí),之前同事也發(fā)了一個(gè)貼吧的段子聚居地,客官稍等,馬上奉上連接:
段友之家 https://tieba.baidu.com/f?ie=...
然后呢,看到上面,確實(shí)好多段友在上面,于是乎,我就想爬取他們的圖片和小視頻,就有了這篇文章的主題:
其實(shí)吧,用Python爬取網(wǎng)站數(shù)據(jù)是最基礎(chǔ)的東西,也不難,但是我還想分享給大家,一起學(xué)習(xí)和交流。
爬取這些網(wǎng)站里的數(shù)據(jù)主要用的模塊是bs4、requests以及os,都是常用模塊
大概思路就是通過(guò)requests模塊請(qǐng)求網(wǎng)頁(yè)html數(shù)據(jù),然后通過(guò)bs4模塊下的BeautifulSoup分析請(qǐng)求的網(wǎng)頁(yè),然后通過(guò)css查找器查找內(nèi)涵段子的圖片以及小視頻的地址,主要實(shí)現(xiàn)代碼如下:
def download_file(web_url): """獲取資源的url""" # 下載網(wǎng)頁(yè) print("正在下載網(wǎng)頁(yè): %s..." % web_url) result = requests.get(web_url) soup = bs4.BeautifulSoup(result.text, "html.parser") # 查找圖片資源 img_list = soup.select(".vpic_wrap img") if img_list == []: print("未發(fā)現(xiàn)圖片資源!") else: # 找到資源,開始寫入 for img_info in img_list: file_url = img_info.get("bpic") write_file(file_url, 1) # 查找視頻資源 video_list = soup.select(".threadlist_video a") if video_list == []: print("未發(fā)現(xiàn)視頻資源!") else: # 找到資源,開始寫入 for video_info in video_list: file_url = video_info.get("data-video") write_file(file_url, 2) print("下載資源結(jié)束:", web_url) next_link = soup.select("#frs_list_pager .next") if next_link == []: print("下載資料結(jié)束!") else: url = next_link[0].get("href") download_file("https:" + url)
得到圖片以及視頻的地址之后,肯定還不夠,還得把這些資源寫入到本地,方式是通過(guò)二進(jìn)制的方式來(lái)讀取遠(yuǎn)程文件資源,然后分類寫入到本地,實(shí)現(xiàn)的主要代碼如下:
def write_file(file_url, file_type): """寫入文件""" res = requests.get(file_url) res.raise_for_status() # 文件類型分文件夾寫入 if file_type == 1: file_folder = "nhdzjpg" elif file_type == 2: file_folder = "nhdzmp4" else: file_folder = "nhdzother" folder = os.path.exists(file_folder) # 文件夾不存在,則創(chuàng)建文件夾 if not folder: os.makedirs(file_folder) # 打開文件資源,并寫入 file_name = os.path.basename(file_url) str_index = file_name.find("?") if str_index > 0: file_name = file_name[:str_index] file_path = os.path.join(file_folder, file_name) print("正在寫入資源文件:", file_path) image_file = open(file_path, "wb") for chunk in res.iter_content(100000): image_file.write(chunk) image_file.close() print("寫入完成!")
最后,再奉上完整的代碼吧。要不然,會(huì)被人說(shuō)的,說(shuō)話說(shuō)一半,說(shuō)福利,也不給全,這就太不夠意思了。客官別急,馬上奉上……
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 爬取百度貼吧,段友之家的圖片和視頻 author: cuizy time:2018-05-19 """ import requests import bs4 import os def write_file(file_url, file_type): """寫入文件""" res = requests.get(file_url) res.raise_for_status() # 文件類型分文件夾寫入 if file_type == 1: file_folder = "nhdzjpg" elif file_type == 2: file_folder = "nhdzmp4" else: file_folder = "nhdzother" folder = os.path.exists(file_folder) # 文件夾不存在,則創(chuàng)建文件夾 if not folder: os.makedirs(file_folder) # 打開文件資源,并寫入 file_name = os.path.basename(file_url) str_index = file_name.find("?") if str_index > 0: file_name = file_name[:str_index] file_path = os.path.join(file_folder, file_name) print("正在寫入資源文件:", file_path) image_file = open(file_path, "wb") for chunk in res.iter_content(100000): image_file.write(chunk) image_file.close() print("寫入完成!") def download_file(web_url): """獲取資源的url""" # 下載網(wǎng)頁(yè) print("正在下載網(wǎng)頁(yè): %s..." % web_url) result = requests.get(web_url) soup = bs4.BeautifulSoup(result.text, "html.parser") # 查找圖片資源 img_list = soup.select(".vpic_wrap img") if img_list == []: print("未發(fā)現(xiàn)圖片資源!") else: # 找到資源,開始寫入 for img_info in img_list: file_url = img_info.get("bpic") write_file(file_url, 1) # 查找視頻資源 video_list = soup.select(".threadlist_video a") if video_list == []: print("未發(fā)現(xiàn)視頻資源!") else: # 找到資源,開始寫入 for video_info in video_list: file_url = video_info.get("data-video") write_file(file_url, 2) print("下載資源結(jié)束:", web_url) next_link = soup.select("#frs_list_pager .next") if next_link == []: print("下載資料結(jié)束!") else: url = next_link[0].get("href") download_file("https:" + url) # 主程序入口 if __name__ == "__main__": web_url = "https://tieba.baidu.com/f?ie=utf-8&kw=段友之家" download_file(web_url)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41818.html
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:背景介紹我大一的時(shí)候?qū)W校就開設(shè)了,但是并沒(méi)有好好學(xué),基本等于是什么也不會(huì),最近才開始看,所以本身也是摸著石頭過(guò)河,見諒心得講真的,爬蟲確實(shí)不像別人想象的那樣簡(jiǎn)單,爬蟲首先要靜下心來(lái),細(xì)心尋找目標(biāo)網(wǎng)站的布局規(guī)律,最重要的是的變化,這是一個(gè)考驗(yàn) 背景介紹 我大一的時(shí)候?qū)W校就開設(shè)了 python,但是并沒(méi)有好好學(xué),基本等于是什么也不會(huì),最近才開始看,所以本身也是摸著石頭過(guò)河,見諒... 心得...
摘要:網(wǎng)頁(yè)都是來(lái)描述頁(yè)面信息。網(wǎng)頁(yè)都使用協(xié)議來(lái)傳輸數(shù)據(jù)。爬蟲的設(shè)計(jì)思路獲取視頻拼接完整獲取視頻播放地址下載視頻模塊使用安裝庫(kù)的七個(gè)主要方法找到單個(gè)視頻播放地址獲取網(wǎng)頁(yè)源代碼獲取播放地址下載視頻實(shí)現(xiàn)效果 什么是爬蟲? 就是抓取網(wǎng)頁(yè)數(shù)據(jù)的程序 爬蟲怎么抓取網(wǎng)頁(yè)數(shù)據(jù)? 網(wǎng)頁(yè)三大特征: 網(wǎng)頁(yè)都有自己唯一的URL。 網(wǎng)頁(yè)都是HTML來(lái)描述頁(yè)面信息。 網(wǎng)頁(yè)都使用http/https協(xié)議來(lái)傳輸HTML數(shù)...
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來(lái)源于某博主:htt...
摘要:今天市場(chǎng)提出活動(dòng)頁(yè),活動(dòng)頁(yè)有一塊內(nèi)容是在一個(gè)手機(jī)背景圖框里播放視頻,網(wǎng)頁(yè)是適配的,設(shè)計(jì)師只給我一張帶有手機(jī)殼的背景圖。 今天市場(chǎng)提出活動(dòng)頁(yè),活動(dòng)頁(yè)有一塊內(nèi)容是在一個(gè)手機(jī)背景圖框里播放視頻,網(wǎng)頁(yè)是適配的,設(shè)計(jì)師只給我一張帶有手機(jī)殼的背景圖。 如果用JS畫應(yīng)該也是可以的,但一個(gè)簡(jiǎn)單的活動(dòng)頁(yè)沒(méi)必要,快速實(shí)現(xiàn)用背景圖調(diào)CSS最快。 showImg(https://segmentfault.c...
閱讀 1681·2021-11-23 09:51
閱讀 2691·2021-11-22 09:34
閱讀 1327·2021-10-14 09:43
閱讀 3668·2021-09-08 09:36
閱讀 3214·2019-08-30 12:57
閱讀 2035·2019-08-30 12:44
閱讀 2524·2019-08-29 17:15
閱讀 3021·2019-08-29 16:08