笔记网络数据抓取--爬虫(二)

接上文
编写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\nHost:bangumi.bilibili.com\r\n\r\n'.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")

会出现
UnboundLocalError: 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\nHost:bangumi.bilibili.com\r\n\r\n'.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')

你可能感兴趣的:(Python)