欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python爬蟲(chóng)系列精品之多線(xiàn)程的簡(jiǎn)單實(shí)例

1.先附上沒(méi)有用多線(xiàn)程的包圖網(wǎng)爬蟲(chóng)的代碼
import requests
from lxml import etree
import os
import time

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到托里網(wǎng)站設(shè)計(jì)與托里網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋托里地區(qū)。

start_time = time.time()#記錄開(kāi)始時(shí)間
for i in range(1,7):
#1.請(qǐng)求包圖網(wǎng)拿到整體數(shù)據(jù)
response = requests.get("https://ibaotu.com/shipin/7-0-0-0-0-%s.html" %str(i))

#2.抽取 視頻標(biāo)題、視頻鏈接
html = etree.HTML(response.text)
tit_list = html.xpath('//span[@class="video-title"]/text()')#獲取視頻標(biāo)題
src_list = html.xpath('//div[@class="video-play"]/video/@src')#獲取視頻鏈接
for tit,src in zip(tit_list,src_list):
    #3.下載視頻
    response = requests.get("http:" + src)
    #給視頻鏈接頭加上http頭,http快但是不一定安全,https安全但是慢

    #4.保存視頻
    if os.path.exists("video1") == False:#判斷是否有video這個(gè)文件夾
        os.mkdir("video1")#沒(méi)有的話(huà)創(chuàng)建video文件夾
    fileName = "video1\\" + tit + ".mp4"#保存在video文件夾下,用自己的標(biāo)題命名,文件格式是mp4
                                        #有特殊字符的話(huà)需要用\來(lái)注釋它,\是特殊字符所以這里要用2個(gè)\\
    print("正在保存視頻文件: " +fileName)#打印出來(lái)正在保存哪個(gè)文件
    with open (fileName,"wb") as f:#將視頻寫(xiě)入fileName命名的文件中
       f.write(response.content)

end_time = time.time()#記錄結(jié)束時(shí)間
print("耗時(shí)%d秒"%(end_time-start_time))#輸出用了多少時(shí)間

2.將上述代碼套用多線(xiàn)程,先創(chuàng)建多線(xiàn)程
data_list = []#設(shè)置一個(gè)全局變量的列表
#創(chuàng)建多線(xiàn)程
class MyThread(threading.Thread):
def init(self, q):
threading.Thread.init(self)
self.q = q

#調(diào)用get_index()
def run(self) -> None:
    self.get_index()

#拿到網(wǎng)址后獲取所需要的數(shù)據(jù)并存入全局變量data_list中
def get_index(self):
    url = self.q.get()
    try:
        resp = requests.get(url)# 訪(fǎng)問(wèn)網(wǎng)址
        #將返回的數(shù)據(jù)轉(zhuǎn)成lxml格式,之后使用xpath進(jìn)行抓取
        html = etree.HTML(resp.content)
        tit_list = html.xpath('//span[@class="video-title"]/text()')  # 獲取視頻標(biāo)題
        src_list = html.xpath('//div[@class="video-play"]/video/@src')  # 獲取視頻鏈接
        for tit, src in zip(tit_list, src_list):
            data_dict = {}#設(shè)置一個(gè)存放數(shù)據(jù)的字典
            data_dict['title'] = tit#往字典里添加視頻標(biāo)題
            data_dict['src'] = src#往字典里添加視頻鏈接
            #print(data_dict)
            data_list.append(data_dict)#將這個(gè)字典添加到全局變量的列表中

    except Exception as e:
        # 如果訪(fǎng)問(wèn)超時(shí)就打印錯(cuò)誤信息,并將該條url放入隊(duì)列,防止出錯(cuò)的url沒(méi)有爬取
        self.q.put(url)
        print(e)

3.用隊(duì)列queue,queue模塊主要是多線(xiàn)程,保證線(xiàn)程安全使用的

def main():

創(chuàng)建隊(duì)列存儲(chǔ)url

q = queue.Queue()
for i in range(1,6):

    # 將url的參數(shù)進(jìn)行編碼后拼接到url
    url = 'https://ibaotu.com/shipin/7-0-0-0-0-%s.html'%str(i)
    # 將拼接好的url放入隊(duì)列中
    q.put(url)

#如果隊(duì)列不為空,就繼續(xù)爬
while not q.empty():
    # 創(chuàng)建3個(gè)線(xiàn)程
    ts = []
    for count in range(1,4):
        t = MyThread(q)
        ts.append(t)
    for t in ts:
        t.start()
    for t in ts:
        t.join()

4.創(chuàng)建存儲(chǔ)方法

#提取data_list的數(shù)據(jù)并保存
def save_index(data_list):
if data_list:
for i in data_list:

下載視頻

        response = requests.get("http:" + i['src'])
        #給視頻鏈接頭加上http頭,http快但是不安全,https安全但是慢

        #保存視頻
        if os.path.exists("video") == False:  # 判斷是否有video這個(gè)文件夾
            os.mkdir("video")  # 沒(méi)有的話(huà)創(chuàng)建video文件夾
        fileName = "video\\" + i['title'] + ".mp4"  # 保存在video文件夾下,用自己的標(biāo)題命名,文件格式是mp4
        #有特殊字符的話(huà)需要用\來(lái)注釋它,\是特殊字符所以這里要用2個(gè)\\
        print("正在保存視頻文件: " + fileName)  # 打印出來(lái)正在保存哪個(gè)文件
        with open(fileName, "wb") as f:  # 將視頻寫(xiě)入fileName命名的文件中
            f.write(response.content)

5.最后就是調(diào)用函數(shù)了
if name== 'main':
start_time = time.time()
#啟動(dòng)爬蟲(chóng)
main()
save_index(data_list)
end_time = time.time()
print("耗時(shí)%d"%(end_time-start_time))

6.附上完整的多線(xiàn)程代碼

import requests
from lxml import etree
import os
import queue
import threading
import time

data_list = []#設(shè)置一個(gè)全局變量的列表

#創(chuàng)建多線(xiàn)程
class MyThread(threading.Thread):
def init(self, q):
threading.Thread.init(self)
self.q = q

#調(diào)用get_index()
def run(self) -> None:
    self.get_index()

#拿到網(wǎng)址后獲取所需要的數(shù)據(jù)并存入全局變量data_list中
def get_index(self):
    url = self.q.get()
    try:
        resp = requests.get(url)# 訪(fǎng)問(wèn)網(wǎng)址
        #將返回的數(shù)據(jù)轉(zhuǎn)成lxml格式,之后使用xpath進(jìn)行抓取
        html = etree.HTML(resp.content)
        tit_list = html.xpath('//span[@class="video-title"]/text()')  # 獲取視頻標(biāo)題
        src_list = html.xpath('//div[@class="video-play"]/video/@src')  # 獲取視頻鏈接
        for tit, src in zip(tit_list, src_list):
            data_dict = {}#設(shè)置一個(gè)存放數(shù)據(jù)的字典
            data_dict['title'] = tit#往字典里添加視頻標(biāo)題
            data_dict['src'] = src#往字典里添加視頻鏈接
            #print(data_dict)
            data_list.append(data_dict)#將這個(gè)字典添加到全局變量的列表中

    except Exception as e:
        # 如果訪(fǎng)問(wèn)超時(shí)就打印錯(cuò)誤信息,并將該條url放入隊(duì)列,防止出錯(cuò)的url沒(méi)有爬取
        self.q.put(url)
        print(e)

def main():

創(chuàng)建隊(duì)列存儲(chǔ)url

q = queue.Queue()
for i in range(1,7):

    # 將url的參數(shù)進(jìn)行編碼后拼接到url
    url = 'https://ibaotu.com/shipin/7-0-0-0-0-%s.html'%str(i)
    # 將拼接好的url放入隊(duì)列中
    q.put(url)

#如果隊(duì)列不為空,就繼續(xù)爬
while not q.empty():
    # 創(chuàng)建3個(gè)線(xiàn)程
    ts = []
    for count in range(1,4):
        t = MyThread(q)
        ts.append(t)
    for t in ts:
        t.start()
    for t in ts:
        t.join()

#提取data_list的數(shù)據(jù)并保存
def save_index(data_list):
if data_list:
for i in data_list:

下載視頻

        response = requests.get("http:" + i['src'])
        #給視頻鏈接頭加上http頭,http快但是不安全,https安全但是慢

        #保存視頻
        if os.path.exists("video") == False:  # 判斷是否有video這個(gè)文件夾
            os.mkdir("video")  # 沒(méi)有的話(huà)創(chuàng)建video文件夾
        fileName = "video\\" + i['title'] + ".mp4"  # 保存在video文件夾下,用自己的標(biāo)題命名,文件格式是mp4
        #有特殊字符的話(huà)需要用\來(lái)注釋它,\是特殊字符所以這里要用2個(gè)\\
        print("正在保存視頻文件: " + fileName)  # 打印出來(lái)正在保存哪個(gè)文件
        with open(fileName, "wb") as f:  # 將視頻寫(xiě)入fileName命名的文件中
            f.write(response.content)

if name== 'main':
start_time = time.time()
#啟動(dòng)爬蟲(chóng)
main()
save_index(data_list)
end_time = time.time()
print("耗時(shí)%d"%(end_time-start_time))

7.這2個(gè)爬蟲(chóng)我都設(shè)置了開(kāi)始時(shí)間和結(jié)束時(shí)間,可以用(結(jié)束時(shí)間-開(kāi)始時(shí)間)來(lái)計(jì)算比較兩者的效率。

python爬蟲(chóng)系列精品之多線(xiàn)程的簡(jiǎn)單實(shí)例
python爬蟲(chóng)系列精品之多線(xiàn)程的簡(jiǎn)單實(shí)例

網(wǎng)站名稱(chēng):python爬蟲(chóng)系列精品之多線(xiàn)程的簡(jiǎn)單實(shí)例
本文網(wǎng)址:http://aaarwkj.com/article42/jjhghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、虛擬主機(jī)、網(wǎng)站收錄、自適應(yīng)網(wǎng)站響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
欧美亚洲综合日韩精品区| 欧美精品青青久久久久久| 亚洲国产传媒在线观看| 99热在线播放精品观看| 人妻av天堂综合一区| 免费在线观看污污污网站| 国产高清自拍视频在线一区| 日本熟熟妇丰满人妻啪啪| 国产精品三级高清在线| 成人色视频免费在线观看| 九九热这里只有免费视频| 国产超码片内射在线| 国产精品一区二区三区乱色| 青青草网站在线观看视频| 亚洲精品亚洲一区亚洲二区| 亚洲黄色片成年人免费观看| 欧美美女午夜福利视频| 亚洲青青草原自拍偷拍| 国产一级黄色免费大片| 夫妻性生活视频在线免费看| 久久一二三四区中文字幕| 亚洲啪啪av一区二区三区| 禁区正片免费看完整国产 | 日韩欧美亚洲视频另类| 国产成年人拍拍免费视频| 国产一区二区三区日本精品| 国产区一区二区三在线播放| 日本在线不卡一二三区| 2023天天操夜夜操| 欧美精品成人在线一区| 免费人成视频在线观看不卡| 国产成人精品一区二区国产乱码| av剧情网址在线观看| 麻豆专区一区二区三区| 蜜臀av网站在线播放| 欧美亚洲五月婷婷激情| 日韩av在线国产观看| 九九热这里面只有精品| 给我搜一个一级黄色片| 日本中文字幕在线一区| 久久香蕉国产线看观看亚洲|