成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于 asyncio 的Python異步爬蟲框架

Vultr / 2271人閱讀

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

aspider

A web scraping micro-framework based on asyncio.

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

介紹
pip install aspider
Item

對(duì)于單頁面,只要實(shí)現(xiàn)框架定義的 Item 就可以實(shí)現(xiàn)對(duì)目標(biāo)數(shù)據(jù)的抓?。?/p>

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

對(duì)于頁面目標(biāo)較多,需要進(jìn)行深度抓取時(shí),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類也可以很好的工作并返回內(nèi)容,這里以這個(gè)為例演示下抓取需要加載js才可以抓取的例子:

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

如果喜歡,可以玩玩看,項(xiàng)目Github地址:aspider

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42408.html

相關(guān)文章

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

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

    BicycleWarrior 評(píng)論0 收藏0
  • Python3 基于asyncio新聞爬蟲思路

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

    zhangyucha0 評(píng)論0 收藏0
  • python基礎(chǔ)教程:異步IO 之 API

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

    vboy1010 評(píng)論0 收藏0
  • 如何實(shí)現(xiàn)一個(gè)Python爬蟲框架

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

    feng409 評(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ù)是未來的一切?;诮y(tǒng)計(jì)學(xué)數(shù)學(xué)模型的各種人工智能的出現(xiàn)...

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

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

0條評(píng)論

Vultr

|高級(jí)講師

TA的文章

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