国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從0開始寫一個(gè)多線程爬蟲(1)

imccl / 1415人閱讀

摘要:最近發(fā)現(xiàn)有個(gè)電影下載網(wǎng)站叫做比特大雄,下了幾部電影之后,打算寫個(gè)爬蟲把網(wǎng)站的電影信息都爬取下來。結(jié)果我就發(fā)現(xiàn),速度太慢了因?yàn)闆Q定將其改成多線程爬蟲,歡迎繼續(xù)閱讀后續(xù)的此系列文章。

最近發(fā)現(xiàn)有個(gè)電影下載網(wǎng)站叫做比特大雄,下了幾部電影之后,打算寫個(gè)爬蟲把網(wǎng)站的電影信息都爬取下來。


一開始思路是這樣的,從首頁開始,解析首頁的所有鏈接,如果這個(gè)鏈接是電影詳情頁的鏈接,就將其html解析成想要的電影信息,如果不是電影詳情頁的鏈接,就將其加入到待爬取的URL list里,等待后續(xù)繼續(xù)從這個(gè)url的頁面爬取更多的鏈接。


爬蟲代碼Version 1

直接給出代碼如下(含注釋):

import requests
import re
import time



# 網(wǎng)站首頁
base_url = r"https://www.btdx8.com/"

# 爬取到的新url會(huì)繼續(xù)加入到這個(gè)list里
total_url_list = [base_url]
# 存放已經(jīng)爬取過的url
used_url_list = []
# 存放是電影詳情頁的url
movie_url_list = []

# 從html文本中抓取url的正則表達(dá)式
url_reg = "href="(https://.*?)""
# 判斷url是不是電影詳情頁url的正則表達(dá)式
movie_url_reg = "https://www.btdx8.com/torrent/.*?html"

while 1:
    # 取出url list中的第一個(gè)url
    url = total_url_list.pop(0)
    print("Current Url:", url)
    print()
    try:
        # 獲取url的html
        text = requests.get(url).text
        # 從html中找到所有的url鏈接
        new_urls = re.findall(url_reg, text)
        # 如果是之前沒出現(xiàn)過的url,將其放入到total_url_list用于后續(xù)繼續(xù)爬取
        for n in new_urls:
            if n not in total_url_list + used_url_list + movie_url_list:
                total_url_list.append(n)
        used_url_list.append(url)
        # 如果當(dāng)前url是電影詳情頁的鏈接,將其存入movie_url_list
        if re.match(movie_url_reg, url):
            movie_url_list.append(url)
        print("Current url succeed")
        time.sleep(0.1)
    except:
        print("Current url failed")
    print("Total: %s, Used: %s, Movie: %s" % (len(total_url_list), len(used_url_list), len(movie_url_list)))
    # 如果total_url_list已經(jīng)為空了就停止循環(huán)
    if len(total_url_list) == 0:
        break
# 打印所有的movie url
print(movie_url_list)

這個(gè)代碼肯定是有些問題的,比如total_url_list可能永遠(yuǎn)都不為空,循環(huán)無法停止,不過可以先跑一跑看看情況。結(jié)果我就發(fā)現(xiàn),速度太慢了!因?yàn)闆Q定將其改成多線程爬蟲,歡迎繼續(xù)閱讀后續(xù)的此系列文章。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42298.html

相關(guān)文章

  • 0開始一個(gè)線程爬蟲(2)

    摘要:繼續(xù)看上一段循環(huán)的代碼,是遍歷,將已經(jīng)掛了的線程去除掉,那么在這個(gè)中線程什么情況下會(huì)死掉就是類中的方法中的這段代碼如果為空會(huì)循環(huán),此時(shí)對(duì)應(yīng)的線程會(huì)死掉。此時(shí)主函數(shù)的循環(huán)將死掉的線程去除,在線程數(shù)不足個(gè)的情況下,接下來的循環(huán)繼續(xù)制造新的線程。 上一篇文章: 從0開始寫一個(gè)多線程爬蟲(1) 我們用繼承Thread類的方式來改造多線程爬蟲,其實(shí)主要就是把上一篇文章的代碼寫到線程類的run方...

    yangrd 評(píng)論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場(chǎng)而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標(biāo)準(zhǔn)庫為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書, 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來說, 基礎(chǔ)大概也就夠用了...

    dailybird 評(píng)論0 收藏0
  • Python協(xié)程(真才實(shí)學(xué),想學(xué)的進(jìn)來)

    摘要:所以與多線程相比,線程的數(shù)量越多,協(xié)程性能的優(yōu)勢(shì)越明顯。值得一提的是,在此過程中,只有一個(gè)線程在執(zhí)行,因此這與多線程的概念是不一樣的。 真正有知識(shí)的人的成長過程,就像麥穗的成長過程:麥穗空的時(shí)候,麥子長得很快,麥穗驕傲地高高昂起,但是,麥穗成熟飽滿時(shí),它們開始謙虛,垂下麥芒。 ——蒙田《蒙田隨筆全集》 上篇論述了關(guān)于python多線程是否是雞肋的問題,得到了一些網(wǎng)友的認(rèn)可,當(dāng)然也有...

    lykops 評(píng)論0 收藏0
  • 關(guān)于Python爬蟲種類、法律、輪子的一二三

    摘要:一般用進(jìn)程池維護(hù),的設(shè)為數(shù)量。多線程爬蟲多線程版本可以在單進(jìn)程下進(jìn)行異步采集,但線程間的切換開銷也會(huì)隨著線程數(shù)的增大而增大。異步協(xié)程爬蟲引入了異步協(xié)程語法。 Welcome to the D-age 對(duì)于網(wǎng)絡(luò)上的公開數(shù)據(jù),理論上只要由服務(wù)端發(fā)送到前端都可以由爬蟲獲取到。但是Data-age時(shí)代的到來,數(shù)據(jù)是新的黃金,毫不夸張的說,數(shù)據(jù)是未來的一切。基于統(tǒng)計(jì)學(xué)數(shù)學(xué)模型的各種人工智能的出現(xiàn)...

    lscho 評(píng)論0 收藏0
  • 優(yōu)雅的使用WebMagic框架Java爬蟲

    摘要:優(yōu)雅的使用框架,爬取唐詩別苑網(wǎng)的詩人詩歌數(shù)據(jù)同時(shí)在幾種動(dòng)態(tài)加載技術(shù)中對(duì)比作選擇雖然差不多兩年沒有維護(hù),但其本身是一個(gè)優(yōu)秀的爬蟲框架的實(shí)現(xiàn),源碼中有很多值得參考的地方,特別是對(duì)爬蟲多線程的控制。 優(yōu)雅的使用WebMagic框架,爬取唐詩別苑網(wǎng)的詩人詩歌數(shù)據(jù) 同時(shí)在幾種動(dòng)態(tài)加載技術(shù)(HtmlUnit、PhantomJS、Selenium、JavaScriptEngine)中對(duì)比作選擇 We...

    leejan97 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<