python3爬蟲踩坑記紀錄篇(二)

2021-08-27 05:10:17 字數 2343 閱讀 9325

1首先這兩天遇到執行緒鎖的問題不涉及鎖機制,只改**

執行緒鎖的時候一定要鎖上全域性變數,區域性變數或沒鎖的情況都會造成程式重複

mutex=threading.lock()
改寫後方案:

with mutex:

for i in range(1000000): #鎖定期間,其他執行緒不可以幹活

num+=1

原方案:當然鎖住的變數一定是全域性變數,區域性變數的話就會使執行緒讀的時候該引數會出現多次讀取同乙個值

if mutex.acquire(1):#鎖住成功繼續幹活,沒有鎖住成功就一直等待,1代表獨佔

for i in range(1000000): #鎖定期間,其他執行緒不可以幹活

num+=1

mutex.release() #釋放鎖

第一種方式:

第二種方式

3檔案操作:乙個簡單的轉移檔案希望能幫到你

name = os.path

.basename(paths) # 獲取檔名

dirname = os.path

.dirname(paths) # 獲取檔案目錄

full_path = os.path

.join(dirname, name)合併路徑

shutil.move(full_path,path)##轉移檔案到目標資料夾,shutil要導包

# proxyhost = "*****"

proxyport = "*****"

# **隧道驗證資訊註冊就會有的

##這些是手機的ua

useragent=[

]headers =

還有就是之前有個面試官驚訝的問我**不好用被絆了怎麼能重連,我只想說你去驚訝吧。

*說個最簡單的吧,在請求的地方加乙個while true: 迴圈中加乙個try except。請求之後判斷返回狀態碼if

status_code == 200 ,來擷取不成功的,成功就break,在200開外的continue(要處理的話自己動腦子,不過不建議,畢竟你使用了**在重新跑一邊未成功的url就好了),報錯了直接continue(相當於換了乙個ip,當然如果ip太差就不要這麼做了)*

5計算地圖上兩地之間距離,不是直線距離,是經緯度差異,比較小眾有需求就用吧

def

calcu_location

(self, location_x, location_y, r=0.1):

lat_range = 180 / math.pi * r / 6372.797

# 裡面的 1 就代表搜尋 1km 之內,單位km

long_r = lat_range / math.cos(location_x * math.pi / 180)

max_lat = location_x + lat_range # 最大緯度

min_lat = location_x - lat_range # 最小緯度

max_long = location_y + long_r # 最大經度

min_long = location_y - long_r # 最小經度

range_xy = {}

range_xy['location_x'] =

range_xy['location_y'] =

return range_xy

l = calcu_location(float(x), float(y))###傳入的經緯度

# 下面了是對經緯度進行取小數點位數,轉型別最後方便比較,當然寫法囉嗦了點

x_max=float(str(l['location_x']['max'])[0:7])

x_min =float(str(l['location_x']['min'])[0:7])

y_max = float(str(l['location_y']['max'])[0:8])

y_min =float(str(l['location_y']['min'])[0:8])

6分詞對比,此處我用的是最懶最簡單的包difflib,當然python還有jieba這個聽說不錯,此處僅為偷懶

difflib.sequencematcher(none,x,y).ratio()返回0到一之間的兩個詞相似度的數字

好了東西有點少但是真的是因為懶

python3爬蟲踩坑記錄篇(一)

最近在寫 的時候經常報錯,能力有限,再此只提供解決辦法,如有錯誤請及時糾正 1 scrapy做post提交data鍵值都是字串,如有漢字或數值型別先轉字串 yield scrapy.formrequest url start url,headers headers,method post formd...

python爬蟲 scrapy的安裝 踩坑記錄

安裝之後,進入bin目錄下,開啟openssl.exe。生成rsa私鑰 genrsa out rsa private key.pem 1024 該命令會生成1024位的私鑰 生成rsa公鑰 rsa in rsa private key.pem pubout out rsa public key.pe...

python踩坑記3 的用法

numpy陣列中,1個表示一維資料,多個表示多維,不管資料是不是多維,都預設為多維。例如 import numpy as np a np.array 1,2,3,4 print a.shape 輸出 runfile d anaconda3 1 untitled0.py wdir d anaconda...