学会python以后真的是用处很大,下面传智播客分享一个关于学会python以后抓取知乎数据的案例。
安装Scrapy爬虫框架
关于如何安装Python以及Scrapy框架,这里不做介绍,请自行网上搜索。
初始化
安装好Scrapy后,执行 scrapy startproject myspider
接下来你会看到 myspider 文件夹,目录结构如下:
scrapy.cfg
myspider
items.py
pipelines.py
settings.py
__init__.py
spiders
__init__.py
编写爬虫文件
在spiders目录下新建 users.py
[color=rgb(184, 92, 0) !important]# -*- coding: utf-8 -*-
[color=teal !important]import [color=teal !important]scrapy
[color=teal !important]import [color=teal !important]os
[color=teal !important]import [color=teal !important]time
[color=teal !important]from [color=rgb(0, 45, 122) !important]zhihu[color=rgb(51, 51, 51) !important].[color=teal !important]items [color=teal !important]import [color=teal !important]UserItem
[color=teal !important]from [color=rgb(0, 45, 122) !important]zhihu[color=rgb(51, 51, 51) !important].[color=teal !important]myconfig [color=teal !important]import [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 爬虫配置
[color=rgb(128, 0, 128) !important]class[color=rgb(0, 111, 224) !important] [color=teal !important]UsersSpider[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]Spider[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]name[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'users'
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]domain[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'https://www.zhihu.com'
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]login_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'https://www.zhihu.com/login/email'
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Accept"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Accept-Language"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"zh-CN,zh;q=0.8"[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Connection"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"keep-alive"[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Host"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"www.zhihu.com"[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Upgrade-Insecure-Requests"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"1"[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"User-Agent"[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]__init__[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]None[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]url
[color=teal !important] [color=teal !important]def [color=teal !important]start_requests[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]domain[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]1
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]request[color=rgb(51, 51, 51) !important]_captcha
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]request_captcha[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 获取_xsrf值
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]_xsrf[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=teal !important]css[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'input[name="_xsrf"]::attr(value)'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important]
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 获取验证码地址
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]captcha_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'http://www.zhihu.com/captcha.gif?r='[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=teal !important]str[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]time[color=rgb(51, 51, 51) !important].[color=teal !important]time[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]*[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]1000[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 准备下载验证码
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]captcha_url[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'_xsrf'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] _xsrf
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]download[color=rgb(51, 51, 51) !important]_captcha
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]download_captcha[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 下载验证码
[color=rgb(0, 111, 224) !important] [color=teal !important]with [color=teal !important]open[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'captcha.gif'[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'wb'[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important] as[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]fp[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]fp[color=rgb(51, 51, 51) !important].[color=teal !important]write[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]body[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 用软件打开验证码图片
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]os[color=rgb(51, 51, 51) !important].[color=teal !important]system[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'start captcha.gif'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 输入验证码
[color=rgb(0, 111, 224) !important] print[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'Please enter captcha: '
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]captcha[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]raw_input[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]FormRequest[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]login_url[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]formdata[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'email'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'email'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'password'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'password'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'_xsrf'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'_xsrf'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'remember_me'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'true'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'captcha'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] captcha
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important]
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]request[color=rgb(51, 51, 51) !important]_zhihu
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]request_zhihu[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/about'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_item[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/followees'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_start[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/followers'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_start[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]user_start[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel_root[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//h2[@class="zm-list-content-title"]'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(184, 92, 0) !important]# 判断关注列表是否为空
[color=rgb(0, 111, 224) !important] if[color=rgb(0, 111, 224) !important] [color=teal !important]len[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel_root[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] for[color=rgb(0, 111, 224) !important] [color=teal !important]sel in[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel_root[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]people_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'a/@href'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important]
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]people_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/about'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_item[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]people_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/followees'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_start[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]scrapy[color=rgb(51, 51, 51) !important].[color=teal !important]Request[color=rgb(51, 51, 51) !important](
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]people_url[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]+[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'/followers'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]headers[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]headers[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]meta[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'proxy'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]UsersConfig[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'proxy'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]meta[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'cookiejar'[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'from'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'sign'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'else'[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'data'[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]callback[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] self[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]user_start[color=rgb(51, 51, 51) !important],
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]dont_filter[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]True
[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]user_item[color=rgb(51, 51, 51) !important](self[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] [color=teal !important]def [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]list[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]:
[color=rgb(0, 111, 224) !important] return[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]list[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] if[color=rgb(0, 111, 224) !important] [color=teal !important]len[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]list[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important] else[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]''
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//div[@class="zm-profile-header ProfileCard"]'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]UserItem[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'url'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]response[color=rgb(51, 51, 51) !important].[color=rgb(0, 45, 122) !important]url[color=rgb(51, 51, 51) !important][[color=rgb(0, 111, 224) !important]:[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]6[color=rgb(51, 51, 51) !important]
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'name'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//a[@class="name"]/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'bio'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[@class="bio"]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'location'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "location")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'business'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "business")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'gender'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]0[color=rgb(0, 111, 224) !important] if[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//i[contains(@class, "icon-profile-female")]'[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important] else[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]1
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'avatar'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//img[@class="Avatar Avatar--l"]/@src'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'education'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "education")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'major'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "education-extra")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'employment'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "employment")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'position'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[contains(@class, "position")]/@title'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'content'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=teal !important]value[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[@class="content"]/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]strip[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]encode[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'utf-8'[color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'ask'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]int[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//div[contains(@class, "profile-navbar")]/a[2]/span[@class="num"]/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'answer'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]int[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//div[contains(@class, "profile-navbar")]/a[3]/span[@class="num"]/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'agree'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]int[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[@class="zm-profile-header-user-agree"]/strong/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]item[color=rgb(51, 51, 51) !important][[color=rgb(221, 17, 68) !important]'thanks'[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(128, 0, 128) !important]int[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]sel[color=rgb(51, 51, 51) !important].[color=teal !important]xpath[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'//span[@class="zm-profile-header-user-thanks"]/strong/text()'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]extract[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]0[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important])
[color=rgb(0, 111, 224) !important] [color=teal !important]yield [color=rgb(0, 45, 122) !important]item
添加爬虫配置文件
在myspider目录下新建myconfig.py,并添加以下内容,将你的配置信息填入相应位置
# -*- coding: utf-8 -*-
UsersConfig = {
# 代理
'proxy': '',
# 知乎用户名和密码
'email': 'your email',
'password': 'your password',
}
DbConfig = {
# db config
'user': 'db user',
'passwd': 'db password',
'db': 'db name',
'host': 'db host',
}
修改items.py
# -*- coding: utf-8 -*-
import scrapy
class UserItem(scrapy.Item):
# define the fields for your item here like:
url = scrapy.Field()
name = scrapy.Field()
bio = scrapy.Field()
location = scrapy.Field()
business = scrapy.Field()
gender = scrapy.Field()
avatar = scrapy.Field()
education = scrapy.Field()
major = scrapy.Field()
employment = scrapy.Field()
position = scrapy.Field()
content = scrapy.Field()
ask = scrapy.Field()
answer = scrapy.Field()
agree = scrapy.Field()
thanks = scrapy.Field()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- coding: utf-8 -*-
import scrapy
class UserItem(scrapy.Item):
# define the fields for your item here like:
url = scrapy.Field()
name = scrapy.Field()
bio = scrapy.Field()
location = scrapy.Field()
business = scrapy.Field()
gender = scrapy.Field()
avatar = scrapy.Field()
education = scrapy.Field()
major = scrapy.Field()
employment = scrapy.Field()
position = scrapy.Field()
content = scrapy.Field()
ask = scrapy.Field()
answer = scrapy.Field()
agree = scrapy.Field()
thanks = scrapy.Field()
将用户数据存入mysql数据库
修改pipelines.py
# -*- coding: utf-8 -*-
import MySQLdb
import datetime
from zhihu.myconfig import DbConfig
class UserPipeline(object):
def __init__(self):
self.conn = MySQLdb.connect(user = DbConfig['user'], passwd = DbConfig['passwd'], db = DbConfig['db'], host = DbConfig['host'], charset = 'utf8', use_unicode = True)
self.cursor = self.conn.cursor()
# 清空表
# self.cursor.execute('truncate table weather;')
# self.conn.commit()
def process_item(self, item, spider):
curTime = datetime.datetime.now()
try:
self.cursor.execute(
"""INSERT IGNORE INTO users (url, name, bio, location, business, gender, avatar, education, major, employment, position, content, ask, answer, agree, thanks, create_at)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
(
item['url'],
item['name'],
item['bio'],
item['location'],
item['business'],
item['gender'],
item['avatar'],
item['education'],
item['major'],
item['employment'],
item['position'],
item['content'],
item['ask'],
item['answer'],
item['agree'],
item['thanks'],
curTime
)
)
self.conn.commit()
except MySQLdb.Error, e:
print 'Error %d %s' % (e.args[0], e.args[1])
return item
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding: utf-8 -*-
import MySQLdb
import datetime
from zhihu.myconfig import DbConfig
class UserPipeline(object):
def __init__(self):
self.conn = MySQLdb.connect(user = DbConfig['user'], passwd = DbConfig['passwd'], db = DbConfig['db'], host = DbConfig['host'], charset = 'utf8', use_unicode = True)
self.cursor = self.conn.cursor()
# 清空表
# self.cursor.execute('truncate table weather;')
# self.conn.commit()
def process_item(self, item, spider):
curTime = datetime.datetime.now()
try:
self.cursor.execute(
"""INSERT IGNORE INTO users (url, name, bio, location, business, gender, avatar, education, major, employment, position, content, ask, answer, agree, thanks, create_at)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
(
item['url'],
item['name'],
item['bio'],
item['location'],
item['business'],
item['gender'],
item['avatar'],
item['education'],
item['major'],
item['employment'],
item['position'],
item['content'],
item['ask'],
item['answer'],
item['agree'],
item['thanks'],
curTime
)
)
self.conn.commit()
except MySQLdb.Error, e:
print 'Error %d %s' % (e.args[0], e.args[1])
return item
修改settings.py
找到 ITEM_PIPELINES,改为:
ITEM_PIPELINES = {
'myspider.pipelines.UserPipeline': 300,
}
1
2
3
ITEM_PIPELINES = {
'myspider.pipelines.UserPipeline': 300,
}
在末尾添加,设置爬虫的深度
DEPTH_LIMIT=10
1
DEPTH_LIMIT=10
爬取知乎用户数据
确保MySQL已经打开,在项目根目录下打开终端,
执行 scrapy crawl users -a url=https://www.zhihu.com/people/,
其中user为爬虫的第一个用户,之后会根据该用户关注的人和被关注的人进行爬取数据
接下来会下载验证码图片,若未自动打开,请到根目录下打开 captcha.gif,在终端输入验证码
数据爬取Loading…
|
|