ノートネットワークデータキャプチャ--爬虫類(二)

1673 ワード

次にtraditional wayを記述するとUnboundLocalError:local variable'chunk'referenced before assignmentが表示されます
コードは次のとおりです.
import socket
def fetch(url):
    global chunk
    sock = socket.socket()
    sock.connect(('bangumi.bilibili.com', 80))
    request = 'GET {} HTTP/1.0\r
Host:bangumi.bilibili.com\r
\r
'.format(url) sock.send(request.encode('ascii')) response = b'' chunk = sock.recv(4096) while chunk: response += chunk chunk = sock.recv(4096) print(".",end="") #page is now downloaded #links = parse_links(response) #q.add(links) return response reps = fetch("https://bangumi.bilibili.com/anime/1689")

Unbound LocalError:local variable'chunk'referenced before assignmentが表示されます
pythonには変数の宣言がないため、デフォルトはローカル変数です.
ここは引用ですhttps://www.cnblogs.com/fendou-999/p/3822028.html
解決策global chunkグローバル変数の追加
import socket
def fetch(url):
    global chunk
    sock = socket.socket()
    sock.connect(('bangumi.bilibili.com', 80))
    request = 'GET {} HTTP/1.0\r
Host:bangumi.bilibili.com\r
\r
'.format(url) sock.send(request.encode('ascii')) response = b'' chunk = sock.recv(4096) while chunk: response += chunk chunk = sock.recv(4096) print(".",end="") #page is now downloaded #links = parse_links(response) #q.add(links) return response reps = fetch("https://bangumi.bilibili.com/anime/1689")
reps.decode('utf-8')