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

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ù)器托管
久久精品视频亚洲一级| 欧美日韩台湾一区二区| 日韩欧美亚洲天堂视频| 日韩欧美中文在线一区二区| 亚洲精品国产av成人| 日本中文字幕免费专区| 日韩在线一区二区视频观看| 国产成人福利视频在线观看| 久久熟妇少妇亚洲精品| 国产精品情侣av自拍| 久久亚洲天堂av丁香| 日韩一区二区三级电影| 日本一区二区久久人妻高清| 精品久久少妇激情视频| 草草在线成年免费视频| 国内成人午夜激情视频| 午夜精品一区二区三区在线视频| 黄片欧美精品在线观看| 国产黄色一区二区三区| 欧美日韩亚洲高清专区| 久久成人激情免费视频| 在线激情视频一区二区| 人妻免费精品久久一区| 日日躁夜夜躁狠狠躁欧美| 精品啪在线观看国产熟女| 国产69精品久久一级| 欧美日韩国产精品高清| 日韩久久精品五月综合| 青青草视频在线好好热| 国产女主播精品视频一区| 丝袜美腿一区在线播放| 亚洲一区有码在线观看| 成人av在线播放亚洲| 亚洲国产专区一区二区麻豆| 成人黄色动作片在线观看| 国产麻豆剧传媒国产av| 福利视频一区二区视频| 国产老熟女不带套91| 青青草原精品资源视频| 99久久久国产精品蜜臀| 亚洲一区二区三区日本在线|