使用aiohttp非同步爬取小說

2021-10-03 07:46:01 字數 3438 閱讀 5460

哈嘍,在這個寂寞的下午來看看這篇很水的文章《使用aiohttp爬取**》

首先,簡單說下同步和非同步。個人理解蛤,舉個例子

同步就是,你去買泡麵,買完得等商家算錢,算完錢了,你才能離開店鋪。

非同步就是,晚上吃個泡麵,先燒個水,那麼在等水開的時候,就可以撕泡麵的包裝,醬料包,然後等到水開了泡就是了

苦逼單身dog,只有泡麵…

先簡單說下協程的使用,協程是輕量型的執行緒,減少了上下文切換的消耗,然後巴拉巴拉巴拉……….這不是我們的重點,我們的這篇文章主要是使用aiohttp

來看看乙個簡單使用協程的例子。輸出  hello 醜到嚇哭小女孩

使用協程

import asyncio

import time

async def word():

print('hello')

print('醜到嚇哭小女孩')

asyncio.run(word())

# hello

# 醜到嚇哭小女孩

如果是多工使用協程,那麼就要用到get_event_loop()進行迴圈和接受列表的gather()。當然,還有一種create_task()的方法

import asyncio

async def word():

print('hello')

print('醜到嚇哭小女孩')

task1 = word()

task2 = word()

task3 = word()

task4 = word()

task5 = word()

tasks = [

asyncio.ensure_future(task1),

asyncio.ensure_future(task2),

asyncio.ensure_future(task3),

asyncio.ensure_future(task4),

asyncio.ensure_future(task5),

]loop = asyncio.get_event_loop()

loop.run_until_complete(asyncio.gather(*tasks))

回到aiohttp這裡爬取的是乙個****,沒有反爬機制,就不用session了,直接request硬肝。在aiohttp裡·使用request

# 獲取網頁

這裡在呼叫text()方法時加了個await是因為檢視原始碼得知text()是乙個協程

這樣就得到了這本**。完整**如下:

# 獲取網頁

print('用時', time.time() - start_time)

#用時 26.709527492523193

requests爬取小說

1.url解析 2.傳送請求 3.接收返回 4.進行解析 5.儲存 將國風中文網制定頁的 的題目 作者 最近更新章節和時間抓取下來儲存到本地 小夥伴們,今天我們用的利劍是requests xpath 第一步 匯入模組 import requests from lxml import etree im...

Python爬取小說

感覺這個夠蛋疼的,因為你如果正常寫的話,前幾次執行沒問題,之後你連 都沒改,再執行就出錯了。其實這可能是網路請求失敗,或者有反爬蟲的東西吧。但這就會讓你寫的時候非常苦惱,所以這這東西,健壯性及其重要!import requests from bs4 import beautifulsoup impo...

nodejs 爬取小說

前段時間看到有個同學用python爬取了 於是打算用nodejs爬取一下 在這裡先總結一下整個過程.僅供學習,請勿商業 類似jquery的乙個庫 const cheerio require cheerio 檔案管理模組 const fs require fs 控制併發數 const async re...