爬取知乎用户信息

本文介绍了如何爬取知乎用户信息。首先分析服务器返回的数据,发现数据以JSON格式呈现,然后通过浏览器的preview栏找到用户数据的URL。接着,通过获取请求URL和headers来准备爬取工作。在正式开始部分,提供了OnesAlone的GitHub链接,其中包含spider_info和spider_user两个模块,分别用于爬取用户详细信息和用户列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

    需要requests、csv、random、time、socket、http.client、pymysql、cookielib库文件
其中需要下载的有PyMySQL、requests可以使用pip命令安装,如下所示:
pip install PyMySQL
pip install requests
也可以使用pycharm的Project Interpreter功能(在file->default setting,选中你的project interpreter点击下方的加号搜索这些库文件即可)安装这些库文件

这里写图片描述

分析并找到爬取地址

我们的目的是爬取知乎用户的用户信息,包括名称、性别、学历、工作地点等以便分析,在知乎用户的用户首页上我们便能可以得到这些信息,那么现在我们就来找到知乎服务器返回给本地浏览器的数据来源是哪里,通过在chrome浏览器开发者工具下的network栏中可以看到有以下内容。

vczh的知乎首页
一般来说服务器返回给本地浏览器的数据为JSON格式,在preview栏中可以很清楚的看到该用户的用户数据,如下:
vczh_info
所以这个请求网址便是我们需要爬取的url地址,我们从headers获取到request url以及request headers。

正式开始

从我们需要爬取的地址信息可以看到,我们需要使用http的get方式。所以我们直接通过requests.get(url,headers)便可以获取到url的响应信息,在对可能出现的一些异常进行捕捉和处理,方便连续爬取,具体代码如下:
def get_content(url):
    timeout = random.choice(range(80,180))
    while True:
        try:
            response = requests.get(url, headers =headers, timeout = timeout)
            status = response.status_code
            #print(status)
            break
        except socket.timeout as e:
            print("3:",e)
            time.sleep(random.choice(range(8,15)))
        except socket.error as e:
            print("4:",e)
            time.sleep(random.choice(range(20,60)))
        except http.client.BadStatusLine as e:
            print("S:",e)
            time.sleep(random.choice(range(30,80)))
        except http.client.IncompleteRead as e:
            print("6:",e)
            time.sleep(random.choice(range(5,15)))
    if status is 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值