爬蟲-文字爬取
import re
import requests
respone = requests.get('https://ishuo.cn/') ##獲取網站url
data = respone.text ##把字符串轉化成文本
result_list = re.findall('<div class="content">(.*?)</div>',data) ##找到需要爬取的內容,需要爬取的內容用'(.*?)'來代替,其他格式不變。
'''
<div class="content">如果你得罪了老板,失去的只是一份工作;
如果你得罪了客戶,失去的不過是一份訂單;是的,世上只有一個人可以得罪:你給她臉色看,你沖她發牢騷,
你大聲頂撞她,甚至當 着她的面摔碗,她都不會記恨你,原因很簡單,因為她是你的母親。</div>
'''
for result in result_list: ##爬取這個網頁所有標記的文本
print(result)
爬蟲-圖片爬取
import re
import requests
count = 0
for i in range(44): ##設置圖片網頁的范圍,進行網頁跳轉。
url = f'http://www.xiaohuar.com/list-1-{i}.html' ##獲取跳轉網頁的url路徑
response = requests.get(url) ##獲取網頁url路徑,並賦值給response
data= response.text ##將response轉化成text文本並賦值給data
# print(data)
result_list = re.findall('src="(.*?)"',data) ##從data文本中提取需要爬取的圖片路徑,用“(.*?)”來代替,並賦值給result_list(變成列表)
for result in result_list: # type:str ##逐個提取圖片url出來
if result.startswith('https'): ##刷選開頭是”https“的圖片url
img_respone = requests.get(result) ##將開頭是“https”的圖片url提取出來,並賦值給img_response列表
# print(img_respone)
img_name = result.split('/')[-1] ##對列表中圖片url以“/”標識進行切分,並提取最后一段url,並賦值給img_name
# print(img_name)
img_data = img_respone.content ##將列表img_response轉換成二進制格式
with open (img_name,'wb') as fw: ##打開img_name文件,並賦予寫入權限(以字節格式寫入)
fw.write(img_data) ##將img_data的數據寫入img_name文件
fw.flush() ##快速寫入
count +=1
print(f'爬取了{count}張圖片') ##可以顯示提示提取了多少張圖片
爬蟲-視頻爬取
import re
import requests
response = requests.get('https://www.ku6.com/index') ##獲取網站url
data = response.text ##將response轉換成文本格式
count = 0
result_list = re.findall('<a class="video-image-warp" target="_blank" href="(.*?)">',data) ##獲取視頻地址
for result in result_list: #type:str ##將獲取第一層視頻地址全部提取出來
# print(result)
if result.startswith('/detail/') or result.startswith('/video/'): ##判斷result里面以“/detail/”和“/video/”開頭的url路徑
result = f'https://www.ku6.com{result}' ## 提取判斷正確的url路徑,並賦值給第二層url列表
result_response = requests.get(result) ##重新獲取第二層視頻url路徑,並賦值給response1
data1 = result_response.text ##將response1格式轉換成文本
#print(data1)
video_url = re.findall('<source src="(.*?)" type="video/mp4">',data1) ##獲取視頻地址
# print(video_url)
if not video_url: ##對視頻格式進行判斷
video_url = re.findall('flvURL: "(.*?)"',data1) ##如果視頻不是這個url格式,則更換成另外一種格式
# print(video_url)
video_response = requests.get(video_url[0]) ##獲取視頻url路徑
video_data = video_response.content
video_name = f"{video_url[0].split('/')[-1]}.mp4"
with open (video_name,'wb') as fw:
fw.write(video_data)
fw.flush()
count +=1
print(f'爬取了{count}個視頻')