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

資訊專欄INFORMATION COLUMN

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

imccl / 1423人閱讀

摘要:最近發現有個電影下載網站叫做比特大雄,下了幾部電影之后,打算寫個爬蟲把網站的電影信息都爬取下來。結果我就發現,速度太慢了因為決定將其改成多線程爬蟲,歡迎繼續閱讀后續的此系列文章。

最近發現有個電影下載網站叫做比特大雄,下了幾部電影之后,打算寫個爬蟲把網站的電影信息都爬取下來。


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


爬蟲代碼Version 1

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

import requests
import re
import time



# 網站首頁
base_url = r"https://www.btdx8.com/"

# 爬取到的新url會繼續加入到這個list里
total_url_list = [base_url]
# 存放已經爬取過的url
used_url_list = []
# 存放是電影詳情頁的url
movie_url_list = []

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

while 1:
    # 取出url list中的第一個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)
        # 如果是之前沒出現過的url,將其放入到total_url_list用于后續繼續爬取
        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)
        # 如果當前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已經為空了就停止循環
    if len(total_url_list) == 0:
        break
# 打印所有的movie url
print(movie_url_list)

這個代碼肯定是有些問題的,比如total_url_list可能永遠都不為空,循環無法停止,不過可以先跑一跑看看情況。結果我就發現,速度太慢了!因為決定將其改成多線程爬蟲,歡迎繼續閱讀后續的此系列文章。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42298.html

相關文章

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

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

    yangrd 評論0 收藏0
  • Python

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

    dailybird 評論0 收藏0
  • Python協程(真才實學,想學的進來)

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

    lykops 評論0 收藏0
  • 關于Python爬蟲種類、法律、輪子的一二三

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

    lscho 評論0 收藏0
  • 優雅的使用WebMagic框架Java爬蟲

    摘要:優雅的使用框架,爬取唐詩別苑網的詩人詩歌數據同時在幾種動態加載技術中對比作選擇雖然差不多兩年沒有維護,但其本身是一個優秀的爬蟲框架的實現,源碼中有很多值得參考的地方,特別是對爬蟲多線程的控制。 優雅的使用WebMagic框架,爬取唐詩別苑網的詩人詩歌數據 同時在幾種動態加載技術(HtmlUnit、PhantomJS、Selenium、JavaScriptEngine)中對比作選擇 We...

    leejan97 評論0 收藏0

發表評論

0條評論

imccl

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<