哈嘍,在這個寂寞的下午來看看這篇很水的文章《使用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...