09_知乎

作者: 过桥 | 来源:发表于2017-08-16 16:20 被阅读22次

简述

本节继续实现知乎关注对象用户信息,与上节不同之处在于以一个种子作为入口,循环抓取其关注头像并存储,便于后续统计分析。

目标对象

依旧是知乎轮子哥关注对象作为种子

使用包

import json
import time, os 
import requests
import datetime
from MSSql_SqlHelp import MSSQL 

实现逻辑

1、数据表设计
因涉及数据量可能较多,单纯Excel管理不利于维护,故设计数据表如下

数据表结构
2、逻辑拆分
单用户递归分页抓取,信息入库
def beginSpider(DOWNLOAD_User, pageNum):
    print("抓取用户 "+ DOWNLOAD_User + " ,页码 "+ str(pageNum))

    try:
        json = download_page(DOWNLOAD_URL.replace('{DOWNLOAD_User}',DOWNLOAD_User).replace('{offset}',str(pageNum * 20)))
    except:
        print("抓取异常:" + DOWNLOAD_URL.replace('{DOWNLOAD_User}',DOWNLOAD_User).replace('{offset}',str(pageNum * 20)))
        time.sleep(2) #延迟N秒再抓取
        json = download_page(DOWNLOAD_URL.replace('{DOWNLOAD_User}',DOWNLOAD_User).replace('{offset}',str(pageNum * 20)))

    #print(json)

    #解析入库.........
 
    #如果有下页,递归
    if json["paging"]["is_end"] == False:
        return pageNum + 1
    return None

多用户序列状态管理

def main():

    now = datetime.datetime.now()
    print("开始时间:" + now.strftime('%Y-%m-%d %H:%M:%S'))  

    DOWNLOAD_User = getSeed() #从序列中获取下一个带抓取用户

    if DOWNLOAD_User == -1:
        print("无待抓取序列,程序终止")
        return None

    pageNum = 0

    while pageNum != None:
        pageNum = beginSpider(DOWNLOAD_User, pageNum)

    updateUser(DOWNLOAD_User) #更新用户状态为已抓取

    now = datetime.datetime.now()
    print("结束时间:" + now.strftime('%Y-%m-%d %H:%M:%S'))  

    time.sleep(30) #延迟N秒再抓取
    main()
抓取效果

总结

遇到问题

直接使用历史代码抓取时遇到无法抓取

排查步骤
1、确定请求地址正确
2、确认cookie有效(可能近期知乎修改了cookie验证规则,对比发现cookie更长了)
3、确认数据解析正常

联想

1、后续爬虫程序开发,在时间充裕情况下,每次爬取预留间隔时间,减小服务器压力
2、数据分析:联想到自己注册时,唯一标识被占用的情况,后续分析下爬取数据中唯一标识使用情况分析;用户关注关系;用户头像分析

源码

spider_www.zhihu.com_following_json_DB.py
MSSql_SqlHelp.py

相关文章

  • 09_知乎

    简述 本节继续实现知乎关注对象用户信息,与上节不同之处在于以一个种子作为入口,循环抓取其关注头像并存储,便于后续统...

  • 知乎?知乎!

    跌入坑里的人, 都是想闯出一番名堂的人, 是冲劲也好, 抑或是错误的折腾, 都是欲望的天性, 无论怎样, 皆是剑走...

  • 知乎,知乎?

    知乎当然是个非常好的平台,否则我也不会选择去那里写东西了。可是我发现很多朋友希望能在那里找到人生的答案,得到生活的...

  • 知乎知乎...知否知否...

    孵化..煅造..中医范儿青年..

  • 知乎变了?知乎没变

    文|邻章 外部投资涌入、用户规模不断提升、内部商业化探索加速,正让知乎成为了一个靶子。业界有关其用户质量、平台氛围...

  • 知乎

    你个老狐狸,不跟价值观不同的人共处,不跟生活习惯不同的人共住一室,简直是一种痛苦。以后出差自己住

  • 知乎

  • 知乎

    很多时候,是你有了责任,有了目标,才会让自己更强大,而不是自己强大了再做某事。永远让事情推些自己走才好。

  • 知乎

    总屏蔽说实话的人

  • 知乎?

    自以为能独立思考,其实还是被其他人忽悠,左右了我的思想。相机不用装肩带,iPhone后台不用清理。这些乍看上去很自...

网友评论

    本文标题:09_知乎

    本文链接:https://www.haomeiwen.com/subject/vbvirxtx.html