python-re(正則)實現簡單爬蟲實例(文字、圖片、視頻)


爬蟲-文字爬取

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}個視頻')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM