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

資訊專欄INFORMATION COLUMN

基于 asyncio 的Python異步爬蟲框架

Vultr / 2269人閱讀

摘要:輕量異步爬蟲框架,基于,目的是讓編寫單頁面爬蟲更方便更迅速,利用異步特性讓爬蟲更快減少在上的耗時介紹對于單頁面,只要實現框架定義的就可以實現對目標數據的抓取對于頁面目標較多,需要進行深度抓取時,就派上用場了支持的加載類也可以很好的

aspider

A web scraping micro-framework based on asyncio.

輕量異步爬蟲框架aspider,基于asyncio,目的是讓編寫單頁面爬蟲更方便更迅速,利用異步特性讓爬蟲更快(減少在IO上的耗時)

介紹
pip install aspider
Item

對于單頁面,只要實現框架定義的 Item 就可以實現對目標數據的抓取:

import asyncio

from aspider import Request

request = Request("https://news.ycombinator.com/")
response = asyncio.get_event_loop().run_until_complete(request.fetch())

# Output
# [2018-07-25 11:23:42,620]-Request-INFO  
# 
Spider

對于頁面目標較多,需要進行深度抓取時,Spider就派上用場了

import aiofiles

from aspider import AttrField, TextField, Item, Spider


class HackerNewsItem(Item):
    target_item = TextField(css_select="tr.athing")
    title = TextField(css_select="a.storylink")
    url = AttrField(css_select="a.storylink", attr="href")

    async def clean_title(self, value):
        return value


class HackerNewsSpider(Spider):
    start_urls = ["https://news.ycombinator.com/", "https://news.ycombinator.com/news?p=2"]

    async def parse(self, res):
        items = await HackerNewsItem.get_items(html=res.body)
        for item in items:
            async with aiofiles.open("./hacker_news.txt", "a") as f:
                await f.write(item.title + "
")


if __name__ == "__main__":
    HackerNewsSpider.start()

支持JS的加載

Request類也可以很好的工作并返回內容,這里以這個為例演示下抓取需要加載js才可以抓取的例子:

request = Request("https://www.jianshu.com/", load_js=True)
response = asyncio.get_event_loop().run_until_complete(request.fetch())
print(response.body)

如果喜歡,可以玩玩看,項目Github地址:aspider

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

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

相關文章

  • python基礎教程:異步IO 之 概念和歷史

    摘要:并發的方式有多種,多線程,多進程,異步等。多線程和多進程之間的場景切換和通訊代價很高,不適合密集型的場景關于多線程和多進程的特點已經超出本文討論的范疇,有興趣的同學可以自行搜索深入理解。 編程中,我們經常會遇到并發這個概念,目的是讓軟件能充分利用硬件資源,提高性能。并發的方式有多種,多線程,多進程,異步IO等。多線程和多進程更多應用于CPU密集型的場景,比如科學計算的時間都耗費在CPU...

    BicycleWarrior 評論0 收藏0
  • Python3 基于asyncio新聞爬蟲思路

    摘要:開始,加入了新的語法,和這兩個關鍵字,也成了標準庫,這對于我們寫異步的程序來說就是如虎添翼,讓我們輕而易舉的實現一個定向抓取新聞的異步爬蟲。網址池異步爬蟲的所有流程不能單單用一個循環來完成,它是多個循環至少兩個相互作用共同完成的。 showImg(https://segmentfault.com/img/bVbsjjR?w=742&h=487); Python寫爬蟲是非常方便的,爬取的...

    zhangyucha0 評論0 收藏0
  • python基礎教程:異步IO 之 API

    摘要:具有以下基本同步原語子進程提供了通過創建和管理子進程的。雖然隊列不是線程安全的,但它們被設計為專門用于代碼。表示異步操作的最終結果。 Python的asyncio是使用 async/await 語法編寫并發代碼的標準庫。通過上一節的講解,我們了解了它不斷變化的發展歷史。到了Python最新穩定版 3.7 這個版本,asyncio又做了比較大的調整,把這個庫的API分為了 高層級API和...

    vboy1010 評論0 收藏0
  • 如何實現一個Python爬蟲框架

    摘要:這篇文章的題目有點大,但這并不是說我自覺對爬蟲這塊有多大見解,我只不過是想將自己的一些經驗付諸于筆,對于如何寫一個爬蟲框架,我想一步一步地結合具體代碼來講述如何從零開始編寫一個自己的爬蟲框架年到如今,我花精力比較多的一個開源項目算是了,這是 showImg(https://segmentfault.com/img/remote/1460000018513379); 這篇文章的題目有點大...

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

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

    lscho 評論0 收藏0

發表評論

0條評論

Vultr

|高級講師

TA的文章

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