這裡主要的還是開啟多執行緒、多執行緒會對num這個全域性變數進行修改,主要是用來計算訪問的次數,所以的要加乙個執行緒鎖。最後別看我執行緒開的多,但是只刷了十幾秒,不過十幾秒的訪問了就已經破百了
附上**:
import requests
import csv
import random
import time
import threading
from threading import lock
url =
''headers =
proxies =
# 新增 **ua
with
open
(r'c:\users\xiongrenyi\desktop\project\study\爬蟲實戰\1-ip&ua\ua.csv'
,'r'
)as f:
reader = csv.reader(f)
for i in reader:
)# 新增 **ip
with
open
(r'c:\users\xiongrenyi\desktop\project\study\爬蟲實戰\1-ip&ua\proxies.csv'
,'r'
)as f:
reader = csv.reader(f)
for i in reader:
:{}'
.format
(i[1
], i[2]
)})mutex = lock(
)num =
0defgo(
):global num
while
true
: r = requests.get(url, headers=random.choice(headers)
, proxies=random.choice(proxies)
)print
(r.status_code)
time.sleep(
0.01
)print
(num)
mutex.acquire(
) num +=
1 mutex.release(
)g = threading.thread(target=go)
g1 = threading.thread(target=go)
g2 = threading.thread(target=go)
g3 = threading.thread(target=go)
g.start(
)g2.start(
)g3.start(
)
CURL多執行緒抓取網頁
網上這類方法似乎太多了。但是總是有一些問題存在。對於多執行緒抓取,現在有如下幾種思路 1.用apache的多執行緒特性,讓php進行 多程序 操作,就像post本身一樣 2.用curl的curl multi庫 對於第一種,我還沒嘗試,因為這種製造的是偽多執行緒,也許效率會低很多,而且不好控制。第二種...
curl多執行緒批量請求
測試經常遇到檢視大資料量url請求是否正常。單執行緒跑的太慢 可以自定義執行緒數進行跑,細節不多說,其實我也是上網上湊的,拿下來修修改改能用即可。bin bash ttime date y m d h m s 允許的執行緒數 thread num 5 定義描述符為9的管道 mkfifo tmp ex...
c 多執行緒抓取網頁內容
1.2.好了,認識 分析完問題,就是解決問題了 多執行緒在c 中並不難實現。它有乙個命名空間 system.threading 提供了多執行緒的支援。要開啟乙個新執行緒,需要以下的初始化 threadstart startdownload new threadstart download 執行緒起始...